Intereting Posts
Как я могу конкатенировать значение внутри функции в jquery в этой ситуации? Как выполнить массовое удаление с использованием Laravel 4.1 на основе массива идентификаторов или объектов? Синтаксис Access-Control-Allow-Origin Как изменить текст, проанализированный с помощью PHP Simple HTML DOM Parser? Есть ли синтаксический анализатор PHP для Notepad ++? как сделать домашнюю страницу dompdf как использовать объект соединения PDO в разных файлах Почему не совпадают метки времени PHP и Javascript? Каков алгоритм, лежащий в основе вложенных комментариев? Как создать кросс-запрос базы данных в PHP? Безопасный запуск сценариев оболочки; избегать варов до исполнения Ошибка TCPDF и mPDF: некоторые данные уже были отправлены в браузер, не могут отправлять PDF-файл Zend Framework 2 – глобальная проверка подлинности с помощью ZFCUser Ошибка соединения SQL с PHP после многих операций Как проверить доменное имя в PHP?

Массив, как отображать только «изменяющиеся значения»

Предположим, у меня есть массив с датами и сезонами, есть одна запись за каждый день. Я хотел бы напечатать строку массива только тогда, когда меняется значение сезона.

массив выглядит так:

2009-10-28 00:00:00 (good season) 2009-10-29 00:00:00 (good season) 2009-10-30 00:00:00 (good season) 2009-10-31 00:00:00 (good season) 2009-11-01 00:00:00 (good season) 2009-11-02 00:00:00 (bad season) 2009-11-03 00:00:00 (bad season) 2009-11-04 00:00:00 (bad season) 2009-11-05 00:00:00 (bad season) 

Прокрутитесь, сохранив рекорд прошлого сезона:

 $lastSeason = ''; foreach ($array as $date => $season) { if ($season != $lastSeason) echo "Season changed on " . $date; $lastSeason = $season; } 

Сохраните состояние последней итерации и сравните ее с состоянием текущего. Если они отличаются, напечатайте элемент:

 $last = null; foreach ($array as $val) { if (preg_match('/^\d{4}-\d{2}\d{2} \d{2}:\d{2}:\d{2} \((good|bad) season\)$/', $val, $match)) { if ($last != $match[1]) { echo $val; } $last = $match[1]; } } 

предполагая, что ваш массив представляет собой массив массивов:

 if(count($array) > 0) { $prev = $array[0]['season']; foreach ($array as $row) { if ($row['season'] != $prev) echo $row['date']; $prev = $row['season']; } }