У меня есть этот массив:PHP - удалить элемент в многомерном массиве
Array (
[0] => Array ([0] => b [1] => d [2] => **c** [3] =>a [4] =>)
[1] => Array ([0] => **c** [1] => a [2] => d [3] => [4] =>)
[2] => Array ([0] => b [1] => d [2] => a [3] => [4] =>)
[3] => Array ([0] => **c** [1] => d [2] => a [3] =>b [4] =>)
)
и нужно удалить (снята с охраны?) Все элементы, где значение «с», так что один заканчивается:
Array (
[0] => Array (**[0] => b [1] => d [2] => a [3] => [4] =>**)
[1] => Array (**[0] => a [1] => d [2] => [3] =>**)
[2] => Array ([0] => b [1] => d [2] => a [3] => [4] =>)
[3] => Array (**[0] => d [1] => a [2] =>b [3] =>**)
)
Элемент удаляется, а остальные элементы перемещаются вверх. Я знаю, что unset не переиндексирует массив. Невозможно отключиться для всех многомерных массивов, но только с одним массивом. Могут ли массивы быть повторно проиндексированы впоследствии? Ценить это.
Код BELOW удаляет элементы, где значение равно «c», но индекс первого элемента не переиндексирован. Может ли кто-нибудь предложить решение для повторной индексации внутренних массивов?
$i=0;
foreach ($array as $val)
{
foreach ($val as $key => $final_val)
{
if ($final_val =="$search_value")
{
unset($array[$i][$key]);
}
}
i = $i + 1;
}
Что вы ожидаете от размеров массива после этого? В общем, это не будет прямоугольник. Вам, вероятно, нужно взглянуть на концепцию ** редких массивов **, если вам действительно интересно, что это 2D, и что некоторые элементы «один раз» (хотя даже в разреженных массивах «ушел» на самом деле просто означает «ноль»). Могли бы вы не назначить их NaN? Что вы на самом деле после? ... – Floris
Флорис - не уверен, что вы подразумеваете под этим. Я ищу простое удаление любых элементов, где оно имеет определенное значение. – FartMachine4U