Удалить элементы массива до текущего года

У меня есть массив, содержащий некоторые даты в следующем формате. Я хочу удалить элементы с ключом до 2019 года.

Это код, который я пробовал до сих пор. Но я не получаю никакого результата.

Может ли кто-нибудь помочь мне.

$array = [
  "date_2018_08" => 81,
  "date_2018_09" => 70,
  "date_2018_10" => 70,
  "date_2018_11" => 95,
  "date_2018_12" => 75,
  "date_2019_01" => 91,
  "date_2019_02" => 78,
  "date_2019_03" => 95,
  "date_2019_04" => 68
];
$year = 2019;
$month = 4;


$array = array_filter($array,function($date){
    $t1 = strtotime(str_replace(["date_", "_"], ["", "-"], $date));
    return $t1 >= strtotime(str_replace(["date_", "_"], ["", "-"], '2019-01-01'));
});
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
2
0
39
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать array_filter (документ) с флагом "ARRAY_FILTER_USE_KEY" как:

$year = 2019;
$filtered = array_filter(
    $array,
    function ($key) use ($year) {
        $parts = explode("_", $key);
        return $parts[1] >= $year;
    },
    ARRAY_FILTER_USE_KEY
);

Живой пример: 3х4л

Отредактировано:

Используя простой foreach:

foreach($array as $k => $v) {
    $parts = explode("_", $k);
    if ($parts[1] >= $year)
        $filtered[$k] = $v;
}

Можно ли обойтись без ARRAY_FILTER_USE_KEY

S S 22.05.2019 13:13

@SS Да - простой цикл foreach - отредактировал мой пост, как это сделать

dWinder 22.05.2019 13:14

Демонстрационная ссылка.

Вы можете передать $year и $month, чтобы отфильтровать массив,

$year  = 2019;
$month = str_pad(4,2,"0",STR_PAD_LEFT); // pad to left with zero to match string
$temp  = array_filter($array, function ($key) use ($year, $month) {
    return (strpos($key, $year . "_" . $month) === false);
}, ARRAY_FILTER_USE_KEY);
print_r($temp);die;

стрпос — Найти позицию первого вхождения подстроки в строку
фильтр_массива — фильтрует элементы массива с помощью функции обратного вызова
str_pad — дополняет строку до определенной длины другой строкой

Note: ARRAY_FILTER_USE_KEY - pass key as the only argument to callback instead of the value

Другие вопросы по теме