Как вовремя перебора массива (foreach) сравнить значение ключа текущей итерации с ключом из предыдущей и вывести результат по условию?

178
30 марта 2019, 02:20

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

$arr[0]= array('order_num'=>'123');
$arr[1]= array('order_num'=>'123');
$arr[2]= array('order_num'=>'456');

Раскладываю его так:

tr>
    <th>Номер заказа</th>
</tr>
 <?
 foreach ($arr as $item) {?>
    <tr>
        <td><?=$item['order_num']?></td>
    </tr>
 <?}?>

Нужно разложить значение в таблицу с условием, если $item['order_num'] повторяется(в данном примере "123"), то выводить:

<tr class='same'>
    <td><?=$item['order_num']?></td>
</tr>

если не повторяется, выводить так:

<tr class='another_class'>
    <td><?=$item['order_num']?></td>
</tr>

Помогите с кодом пожалуйста, уже всю голову сломал!

Answer 1

Подсчитайте количество повторений номеров в исходном массиве, на его основе и выбирайте класс.

$dups = array_count_values(array_column($data, 'order_num'));
foreach($data as $row){
    ...
    $cls = dups[$row['order_num']] == 1 ? "first" : "second";
    ... // <td class="<?= $cls ?>"
}

Хотя "повторяется", видимо имелось в виду две одинаковых строки подряд. Т.е. чередовать, и одинаковые выводить с одним классом

$num = null;
$clsIdx = 0;
foreach($data as $row){
    if($num != $row['order_num']){
       $num = $row['order_num'];
       $clsIdx++;
    } 
    echo ($clsIdx % 2) ? "first" : "second";
}
READ ALSO
Как отправить данные на email желательно, на php

Как отправить данные на email желательно, на php

Есть такая страница корзины:

182
Yandex MAP API + Mysql

Yandex MAP API + Mysql

мне нужно сделать фильтр меток на карте используя Yandex map APIВопрос заключается в том что нужно вывести данные из базы и потом используя фильтры...

218
Обработка exec() в PHP

Обработка exec() в PHP

Необходимо запустить python скрипт из phpИспользую следующий код

157
WebView доступ к камере и фотографиям

WebView доступ к камере и фотографиям

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

177