Удаление значения из массива PHP

Используя 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 ().