PHP Рекурсивно сбрасывает ключи массива, если они совпадают - PullRequest
9 голосов
/ 10 ноября 2009

У меня есть следующий массив, который мне нужен для рекурсивного цикла и удаления любых дочерних массивов, имеющих ключ 'fields'. Я пробовал фильтр массива, но у меня возникают проблемы с тем, чтобы заставить его работать.

$myarray = array(
    'Item' => array(
        'fields' => array('id', 'name'),
        'Part' => array(
            'fields' => array('part_number', 'part_name')
        )
    ),
    'Owner' => array(
        'fields' => array('id', 'name', 'active'),
        'Company' => array(
            'fields' => array('id', 'name',),
            'Locations' => array(
                'fields' => array('id', 'name', 'address', 'zip'),
                'State' => array(
                    'fields' => array('id', 'name')
                )
            )
        )
    )    
);

Вот как мне нужно, чтобы результат выглядел так:

$myarray = array(
    'Item' => array(
        'Part' => array(
        )
    ),
    'Owner' => array(
        'Company' => array(
            'Locations' => array(
                'State' => array(
                )
            )
        )
    )    
);

Ответы [ 11 ]

0 голосов
/ 10 ноября 2009

Дайте этой функции шанс. Он удалит ключи с полями и оставит остаток массива.

function unsetFields($myarray) {
    if (isset($myarray['fields']))
        unset($myarray['fields']);
    foreach ($myarray as $key => $value)
        $myarray[$key] = unsetFields($value);
    return $myarray;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...