【问题标题】:PHP - Apply operations to descendant arrays regardless of parent arraysPHP - 无论父数组如何,都将操作应用于后代数组
【发布时间】:2013-09-22 00:54:30
【问题描述】:

在一个多维数组中,我试图选择具有某个键的所有后代数组,无论它们的父数组是什么。我知道以下语法不起作用,但希望它有助于说明我想要完成的工作:

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

同样,我需要弄清楚兄弟数组是否不包含这个数组键。像这样的东西(再次,我知道语法非常错误):

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

【问题讨论】:

  • 你看过array_walk_recursive吗?
  • 是只有三维数组还是你有未定义的维度(可以是任意数量的维度)?

标签: php arrays multidimensional-array parent-child descendant


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多