I have a multidimensional array and I want to loop through every item on every level and remove any items where 'children' and 'attribute_id' are both empty (in this case the last 2 items with a key of 56 and 70).
Array
(
[11] => Array
(
[page_id] => 11
[page_parent_id] => 0
[attribute_id] => 8
[children] => Array
(
)
)
[12] => Array
(
[page_id] => 12
[page_parent_id] => 0
[attribute_id] =>
[children] => Array
(
[49] => Array
(
[page_id] => 49
[page_parent_id] => 12
[attribute_id] =>
[children] => Array
(
[50] => Array
(
[page_id] => 50
[page_parent_id] => 49
[attribute_id] => 32
[children] => Array
(
)
)
)
)
)
)
[13] => Array
(
[page_id] => 13
[page_parent_id] => 0
[attribute_id] => 9
[children] => Array
(
)
)
[46] => Array
(
[page_id] => 46
[page_parent_id] => 0
[attribute_id] =>
[children] => Array
(
[52] => Array
(
[page_id] => 52
[page_parent_id] => 46
[attribute_id] => 34
[children] => Array
(
)
)
[53] => Array
(
[page_id] => 53
[page_parent_id] => 46
[attribute_id] =>
[children] => Array
(
[54] => Array
(
[page_id] => 54
[page_parent_id] => 53
[attribute_id] => 35
[children] => Array
(
)
)
[70] => Array
(
[page_id] => 70
[page_parent_id] => 53
[attribute_id] =>
[children] => Array
(
)
)
)
)
[56] => Array
(
[page_id] => 56
[page_parent_id] => 46
[attribute_id] =>
[children] => Array
(
)
)
)
)
)
I've got this so far which I can echo out the items I want to unset but I'm not sure how to get it so I can actually unset it.
function loop($a) {
if(empty($a['children']))
{
if(empty($a['attribute_id']))
{
var_dump($a);
}
} else {
foreach($a['children'] as $v) {
loop($v);
}
}
}
foreach($pages as $p)
{
loop($p);
}