PHP - применять операции к массивам-потомкам независимо от родительских массивов
В многомерном массиве я пытаюсь выбрать все массивы-потомки с определенным ключом, независимо от их родительских массивов. Я знаю, что следующий синтаксис не работает, но, надеюсь, он поможет проиллюстрировать то, что я пытаюсь выполнить:
<?php
foreach ($array[*][*]['descendant'] as $descendent) {
// do stuff
}
?>
Точно так же мне нужно выяснить, не содержат ли одноуровневые массивы этот ключ массива. Примерно так (опять же, я знаю, что синтаксис ужасно неправильный):
<?php
foreach ($array[*][*]['descendant'] < 1 as $descendent) {
// do stuff
}
?>
1 ответ
Решение
Если всегда есть 3-мерный массив, вы можете использовать вложенный цикл:
foreach($array as $lv1) {
foreach($lv1 as $lv2) {
foreach($lv2['descendant'] as $descendent) {
// do stuff
}
}
}
Если вы хотите поддерживать неограниченное количество измерений, вы можете использовать этот уродливый код
function drill($arr) {
if (isset($arr) && is_array($arr)) {
foreach($arr as $key => $value) {
if ($key == 'descendant') {
foreach($value as $descendent) {
// do stuff here
}
} else {
drill($value);
}
}
}
}
drill($array);