Используя PHP, я пытаюсь удалить элемент из массива на основе значения элемента.
Например, со следующим массивом:
Array ( [671] => Array ( [0] => 1 [1] => 100 [2] => 1000 ) [900] => Array ( [0] => 15 [1] => 88 } )
Я хотел бы иметь возможность указать значение для внутренних массивов для удаления. Например, если я задал 100, результирующий массив будет выглядеть так:
Array ( [671] => Array ( [0] => 1 [2] => 1000 ) [900] => Array ( [0] => 15 [1] => 88 } )
Моя первая мысль состояла в том, чтобы перебрать массив с помощью foreach и отключить «оскорбительное» значение, когда я его нашел, но это, похоже, не ссылается на исходный массив, а только на переменные цикла, которые были созданы.
Благодарю.
foreach($array as $id => $data){ foreach($data as $index => $offending_val){ if($offending_val === 100){ unset($array[$id][$index]); } } }
сforeach($array as $id => $data){ foreach($data as $index => $offending_val){ if($offending_val === 100){ unset($array[$id][$index]); } } }
Вы можете использовать:
array_walk($your_array, function(&$sub, $key, $remove_value) { $sub = array_diff($sub, array($remove_value)); }, 100);
Пара идей:
Вы можете попробовать array_filter, передав функцию обратного вызова, которая возвращает false, если значение является тем, которое вы хотите отменить. Используя приведенный выше пример:
$ new_inner_array = array_filter ($ inner_array, $ callback_that_returns_false_if_value_100)
Если вы хотите сделать что-то более сложное, вы можете изучить класс ArrayIterator SPL, в частности метод offsetUnset ().