I\'ve got a nested tree structure which is based on the array below:
Array ( [1] => Array ( [id] => 1 [parent] => 0 [n
Rather than putting the test for which elements to destroy in the search function, pass a function to test for targets.
function searchAndDestroy(&$a, $targetp){
foreach($a as $k => &$v){
if(is_array($v)){
searchAndDestroy($v, $targetp);
}
if ($targetp($k, $v)) {
unset($a[$k]);
}
}
}
searchAndDestroy($menu, function ($k, $v) {
return is_array($v)
&& array_key_exists('basename', $v) && empty($v['basename'])
&& (empty($v['child']) || count($v['child']) == 0);
});
For PHP < 5.3 (or if you call searchAndDestroy
with that function in more than one spot), name the function and pass the name rather than an anonymous function.