遍历PHP中的复杂关联数组
时间:2020-03-05 18:42:48 来源:igfitidea点击:
有没有一种简单的方法可以迭代PHP中此结构的关联数组:
数组$ searches具有编号索引,具有4到5个关联部分。因此,我不仅需要通过$ searches [n]遍历$ searches [0],而且还需要通过$ searches [n] [" partn"]遍历$ searches [0] [" part0"]。
。困难的部分是不同的索引具有不同数量的部分(有些可能会丢失一两个)。
我们是否有想法以一种很好,整洁且易于理解的方式来执行此操作?
解决方案
回答
我们应该可以使用嵌套的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"; } }
回答
我们可以仅遍历所有" part [n]"项并使用isset来查看它们是否确实存在吗?
回答
嵌套两个foreach
循环:
foreach ($array as $i => $values) { print "$i {\n"; foreach ($values as $key => $value) { print " $key => $value\n"; } print "}\n"; }
回答
我真的不确定意思,这肯定是我们需要的一对foreach循环吗?
foreach($array as $id => $assoc) { foreach($assoc as $part => $data) { // code } }
还是我们需要递归的东西?我将能够通过示例数据和上下文为我们提供更多帮助,以返回数据。
回答
看起来特别适合使用递归函数。如果我们有两个以上的深度级别。
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 } }
回答
我知道这是问题的法术学,但是使用Spl迭代器可以很容易地在多维数组上进行迭代
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array)); foreach($iterator as $key=>$value) { echo $key.' -- '.$value.'<br />'; }
看
- http://php.net/manual/zh/spl.iterators.php