Запомнить пред предыдущее значение в массиве php

179
30 ноября 2021, 13:20

Есть примерный массив

$arr = array(1,12,34,34,34,50,56,56,22);

Как можно определить при переборе массива будет ли следовать за текущим значением еще одно такое. Тоесть как бы нужно понять если элемент 1 в списке то делаем что-то, если таких элементов несколько (повторяющиеся) то делаем только на последнем. Пробовал сделать так

for($i=0;$i<count($arr);$i++) {
if(isset($old_value) && $old_value == $arr[$i]) { 
    // если есть совпадение с предыдущим значением
    // то группируем данные
} else {
    // иначе добавляем в базу
}
$old_value = $arr[$i];
}

Только здесь проблема в том что при переборе первое повторяющееся число будет попадать в условие где данные добавляются в базу

Answer 1
for($i=0;$i<count($arr);$i++) {
   // если не последний и равен следующему
   if(isset($arr[$i+1]) and ($arr[$i+1] == $arr[$i])) { 
      // то группируем данные
   } 
   else {
      // иначе добавляем в базу
   }
 }
Answer 2

Не нужно создавать никаких дополнительных переменных чтобы это узнать.

$arr = array(1,12,34,34,34,50,56,56,22);
for ($i=0;$i<count($arr);$i++) {
    if (isset($arr[$i+1])&&$arr[$i]!=$arr[$i+1]){
        echo 'следующие значения не повторяются у эл-тов с индексом: '.$i.PHP_EOL;
    } else {
        echo 'следующие значения повторяются у эл-тов с индексом:'.$i.PHP_EOL;
    }
}
Answer 3

Все оказалось намного проще, вот код

for($i=0;$i<count($arr);$i++) {
if(isset($old_value) && $old_value == $arr[$i]) { 
    // если есть совпадение с предыдущим значением
    // то групирем данные
} else {
    // иначе добавляем в базу
}
if($i > 1) $older_value = $old_value;
$old_value = $arr[$i];
}

Нужно всего лишь перед присваиванием предыдущего значения записать в переменную данные $old_vale;

Answer 4

нужно понять если элемент 1 в списке то делаем что-то, если таких элементов несколько (повторяющиеся) то делаем только на последнем

Если всё обстоит именно так, то можно использовать array_unique

$uniqItems = array_unique($arr);
foreach ($uniqItems as $item) {
    // делаем что-то
}
READ ALSO
substr() expects parameter 1 to be string

substr() expects parameter 1 to be string

работаю с массивом и использую функцию substr, где то есть ошибка но не понимаю где, помогите пожалуйста

148
ubuntu error code 255

ubuntu error code 255

У меня есть PHP скрипт который всегда весит в безконечном цикле(обработчик Телеграм бота) Когда я его запускаю в консоле на хостинге (php initphp)...

214
Обработка зависимых списков(yii2)

Обработка зависимых списков(yii2)

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

102
Как мне вырезать путь файла?

Как мне вырезать путь файла?

строчка в контроллере

134