У меня есть массив, структурированный как:
$something = array(
0 => array(
'label' => 'Foo',
'items' => array(
'123' => 4,
'124' => 0,
)
),
1 => array(
'label' => 'Bar',
'items' => array(
'125' => 5,
'126' => 1,
)
),
2 => array(
'label' => 'Baz',
'items' => array(
'127' => 0,
'128' => 0,
)
)
);
И мне нужно удалить все ключи 'items' со значением ноль, а если у элементов нет дочерних элементов, удалить весь блок.
Итак, после фильтрации этого массива у меня должно быть:
array(2){
[0]=>
array(2) {
["label"]=> "Foo"
["items"]=>
array(1) {
[123]=> 4
}
}
[1]=>
array(2) {
["label"]=> "Bar"
["items"]=>
array(2) {
[125]=> 5
[126]=> 1
}
}
}
Я пытался использовать array_filter, array_walk и array_walk_recursive (это работает хорошо - но - не позволяет мне удалить ключи вфункция обратного вызова ..) безуспешно ..
Нужно ли мне деконструировать и перестраивать новый массив, или мне не хватает правильного использования функций array_ *?