php - 获取深度不确定的多维数组的叶子节点值

标签 php arrays recursion multidimensional-array filtering

我有一个像这样的数组:

Array
(
    [23] => 540,
    [25] => Array
        (
            [656] => Array(671 ,680),
            [345] => 400
        )
)

我想获取值:

540, 671, 680, 400

对我来说问题是,这个数组正在增长,但我不知道它会有多少层深。

最佳答案

您可以使用 SPL 的 RecursiveArrayIteratorRecursiveIteratorIterator及其 LEAVES_ONLY 标志。

独立示例:

<?php
$rai = new RecursiveArrayIterator(getData());
// $rii = new RecursiveIteratorIterator($rai, RecursiveIteratorIterator::LEAVES_ONLY) - but this is the default
$rii = new RecursiveIteratorIterator($rai);
foreach($rii as $n) {
    echo $n, "\n";
}

// test data source    
function getData() {
    return array(
        23 => 540,
            25 => array(
                656 => array(671,680),
                345 => 400
            )
    );
}

打印

540
671
680
400

关于php - 获取深度不确定的多维数组的叶子节点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9872190/

相关文章:

javascript - 从 php 重定向到另一个文件没有发生

php - 登录模态窗口后刷新/更新主页

c - 将 char 数组放入分配的空间中

arrays - Matlab 从数组中删除不需要的数字

涉及函数、递归和类的 Python 练习

php - Laravel Dusk - 重用浏览器及其 session 和 cookie

php - 奇怪的意外 T_STRING 错误

c++ - 如何在 C++ 中将字符串数组转换为字符串类型,如将每个元素连接成一个字符串,并在字符串上使用子字符串?

r - 仅在顶层拆分带有嵌套括号的字符串,其中 "level"由括号确定

javascript - 从对象构建目录树