当前位置:  开发笔记 > 编程语言 > 正文

在PHP中迭代复杂的关联数组

如何解决《在PHP中迭代复杂的关联数组》经验,为你挑选了4个好方法。

有没有一种简单的方法可以在PHP中迭代这个结构的关联数组:

该数组$searches具有编号索引,具有4到5个关联部分.所以,我不仅需要遍历$searches[0]通过$searches[n],而且$searches[0]["part0"]通过$searches[n]["partn"].困难的部分是不同的索引具有不同数量的部分(有些可能缺少一个或两个).

想要以一种美好,整洁,易懂的方式做到这一点?



1> Konrad Rudol..:

嵌套两个foreach循环:

foreach ($array as $i => $values) {
    print "$i {\n";
    foreach ($values as $key => $value) {
        print "    $key => $value\n";
    }
    print "}\n";
}



2> Gordon..:

我知道这是一个问题,但是Spl Iterators很容易迭代多维数组

$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));

foreach($iterator as $key=>$value) {
    echo $key.' -- '.$value.'
'; }

看到

http://php.net/manual/en/spl.iterators.php


@Petah将iteratoror包装到FilterIterator中,该函数检查accept()方法中的is_object.

3> Milan Babušk..:

看起来像一个递归函数的好地方,尤其是.如果你有两个以上的深度.

function doSomething(&$complex_array)
{
    foreach ($complex_array as $n => $v)
    {
        if (is_array($v))
            doSomething($v);
        else
            do whatever you want to do with a single node
    }
}



4> Re0sless..:

您应该能够使用嵌套的foreach语句

从PHP手册

/* foreach example 4: multi-dimensional arrays */
$a = array();
$a[0][0] = "a";
$a[0][1] = "b";
$a[1][0] = "y";
$a[1][1] = "z";

foreach ($a as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2\n";
    }
}


只有2个尺寸,不适用于2个以上的尺寸
推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有