我有以下数组,我需要递归遍历并删除所有具有键“ 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( ) ) ) ) );
如果要递归操作,则需要将该数组作为参考传递,否则,您会进行许多不必要的复制:
function recursive_unset(&$array, $unwanted_key) { unset($array[$unwanted_key]); foreach ($array as &$value) { if (is_array($value)) { recursive_unset($value, $unwanted_key); } } }