array_splice () не работает должным образом внутри цикла

Этот код работает как ожидалось и удаляет элемент массива, когда значение равно 5 или 10. Но он работает только тогда, когда у меня есть 1 значение, которое 5 или 10 в массиве.

Если у меня более 1 значения, равного 5 или 10, оно удаляет только 1 из них и оставляет другие элементы в массиве.

Мой код:

for($i = 0; $i <= 10; $i++) {
if($somevar[$i] == 5 || $somevar[$i] == 10) {
echo 'the sumvar'.$somevar[$i].' exists<br>';
array_splice($somevar, $i, 1);
}
}

В качестве примера, если у меня есть: [3, 5, 4] результат, как и ожидалось: [3, 4], Но если у меня есть массив, как: [3, 5, 10, 4] он просто удаляет 5, но не 10: [3, 10, 4],

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

5

Решение

Похоже, вы упустили, что элементы массива перенумерованы после сплайс-операции.

Вам нужно будет настроить переменную цикла:

для ($ i = 0; $ i < SizeOf ($ somevar); $ i ++) {
if ($ somevar [$ i] == 5 || $ somevar [$ i] == 10) {
echo 'the sumvar'. $ somevar [$ i]. ' существует<ш> ';
array_splice ($ somevar, $ i, 1);
$ I--;
}
}
7

Другие решения

Других решений пока нет …