Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-对子数组应用操作,而不考虑父数组_Php_Arrays_Multidimensional Array_Parent Child_Descendant - Fatal编程技术网

PHP-对子数组应用操作,而不考虑父数组

PHP-对子数组应用操作,而不考虑父数组,php,arrays,multidimensional-array,parent-child,descendant,Php,Arrays,Multidimensional Array,Parent Child,Descendant,在多维数组中,我试图选择具有某个键的所有子数组,无论它们的父数组是什么。我知道下面的语法不起作用,但希望它能帮助说明我要实现的目标: <?php foreach ($array[*][*]['descendant'] as $descendent) { // do stuff } ?> 类似地,我需要确定同级数组是否不包含此数组键。类似这样的东西(同样,我知道语法是非常错误的): 如果始终存在三维数组,则可以使用嵌套循环: foreach($array as

在多维数组中,我试图选择具有某个键的所有子数组,无论它们的父数组是什么。我知道下面的语法不起作用,但希望它能帮助说明我要实现的目标:

<?php
  foreach ($array[*][*]['descendant'] as $descendent) {
     // do stuff
  }
?>

类似地,我需要确定同级数组是否不包含此数组键。类似这样的东西(同样,我知道语法是非常错误的):


如果始终存在三维数组,则可以使用嵌套循环:

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);

你看过吗?它只是三维数组还是你有未定义的维度(可以是任意数量的维度)?
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);