Этот код работает как ожидалось и удаляет элемент массива, когда значение равно 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]
,
Я не могу понять, что я делаю неправильно, и почему мой код не работает должным образом?
Похоже, вы упустили, что элементы массива перенумерованы после сплайс-операции.
Вам нужно будет настроить переменную цикла:
для ($ i = 0; $ i < SizeOf ($ somevar); $ i ++) { if ($ somevar [$ i] == 5 || $ somevar [$ i] == 10) { echo 'the sumvar'. $ somevar [$ i]. ' существует<ш> '; array_splice ($ somevar, $ i, 1); $ I--; } }
Других решений пока нет …