Рекурсивное удаление элементов многомерного массива

Рейтинг: 2Ответов: 1Опубликовано: 09.04.2015

Добрый день. Пытаюсь удалить рекурсивно определенные элементы из многомерного массива, но чего - то не получается. Использую php 5.3.

public static function removemainfilterGroup($arr)
{
    //$temp = $arr;
    $temp = array(
    'qwe'=>'test',
    'eqw'=>array(
        'sxf'=>'test',
        'asd'=>'test',
        'zc'=>array(
            'dsf'=>'test',
            'filter_group'=>'2',
            'gb'=>'test'
        ),
        'jh'=>'test',
        'hh'=>'test'
        ),
    'ytu'=>'test',
    'uy'=>array(
        'io'=>'test',
        'filter_group'=>'2',
        'yu'=>'test'
    ),
    'hjk'=>'test'
    );
    self::recursiveRemoval($temp);
    var_dump($temp);
    exit;
    $arr = array_values($arr);
    return $arr;
}

private static function recursiveRemoval(&$array)
{
    if(is_array($array))
    {
        foreach($array as $key=>&$arrayElement)
        {
            if(is_array($arrayElement))
            {
                self::recursiveRemoval($arrayElement);
            }
            else
            {
                if($key == 'filter_group' &&  $arrayElement == '2')
                {
                    unset($array);
                }
            }
        }
    }
}

На выходе

array(5) { ["qwe"]=> string(4) "test" ["eqw"]=> array(5) { ["sxf"]=> string(4) "test" ["asd"]=> string(4) "test" ["zc"]=> array(3) { ["dsf"]=> string(4) "test" ["filter_group"]=> string(1) "2" ["gb"]=> string(4) "test" } ["jh"]=> string(4) "test" ["hh"]=> string(4) "test" } ["ytu"]=> string(4) "test" ["uy"]=> array(3) { ["io"]=> string(4) "test" ["filter_group"]=> string(1) "2" ["yu"]=> string(4) "test" } ["hjk"]=> string(4) "test" } 

По идее из temp должны быть удалены ключи 'filter_group'. Но этого не происходит. Проверяю var_dump-ом саму функцию до unset.

if($key == 'filter_group' &&  $arrayElement == '2')
                {
                    var_dump($array);
                    exit;
                    unset($array);
                }

На выходе

array(3) { ["dsf"]=> string(4) "test" ["filter_group"]=> &string(1) "2" ["gb"]=> string(4) "test" } 

Проверяю var_dump-ом саму функцию после unset.

if($key == 'filter_group' &&  $arrayElement == '2')
                {
                    unset($array);
                    var_dump($array);
                    exit;
                }

На выходе

NULL

Ответы

Ответов пока нет.