@kbc590

Как найти и удалить элемент многомерного массива при помощи php?

На входе есть JSON
[{"id":70119},{"id":70131},{"id":70133},{"id":70123},{"id":70121}]


Или такой
[{"id":70119,"children":[{"id":70131}]},{"id":70133},{"id":70123},{"id":70121}]


Быть может такой :-)
[{"id":70119,"children":[{"id":70133,"children":[{"id":70131}]}]},{"id":70123},{"id":70121}]


Перевожу его в массив. Вложенность массива неконтролируемая.
echo $t.'<br>';
$t = json_decode ($t);


Как найти и удалить элемент, например, со значением "70119"?

Апдейт (решено):
Предложенный рабочий вариант от: toster.ru/user/zoonman

$t = '[{"id":70119},{"id":70131},{"id":70133},{"id":70123},{"id":70121}]';

echo $t.'<br>';

function recursiveRemoval(&$array, $val)
{
    if(is_array($array))
    {
        foreach($array as $key=>&$arrayElement)
        {
            if(is_array($arrayElement))
            {
                recursiveRemoval($arrayElement, $val);
            }
            else
            {
                if($arrayElement == $val)
                {
                    unset($array[$key]);
                }
            }
        }
    }
}


$t = json_decode ($t, true);
recursiveRemoval($t, '70131');
$t = json_encode($t);
echo '<hr> -> '.$t.' <- <br>';
  • Вопрос задан
  • 4814 просмотров
Решения вопроса 1
@kbc590 Автор вопроса
Нашел такой код, но он не работает. На выходе эхо выдает NULL
$t = '[{"id":70119},{"id":70131},{"id":70133},{"id":70123},{"id":70121}]';
echo $t.'<br>';
$t = json_decode ($t);


function recursiveRemoval(&$array, $val)
{
    if(is_array($array))
    {
        foreach($array as $key=>&$arrayElement)
        {
            if(is_array($arrayElement))
            {
                recursiveRemoval($arrayElement, $val);
            }
            else
            {
                if($arrayElement == $val)
                {
                    unset($array[$key]);
                }
            }
        }
    }
}

$t = recursiveRemoval($t, '70119');

//$t = json_encode($t);
echo '<hr> -> '.var_dump($t).' <- <br>';
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@qwestion
Найти уже готовую корзину)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы