有没有一种简单的方法可以在 PHP 中迭代此结构的关联数组:
数组
$searches
有一个编号索引,有 4 到 5 个关联部分。所以我不仅需要迭代 $searches[0]
到 $searches[n]
,还需要迭代 $searches[0]["part0"]
到 $searches[n]["partn"]
。困难的部分是不同的索引有不同数量的部分(有些可能会缺少一两个)。
有没有想过以一种友好、简洁且易于理解的方式来做这件事?
我知道这是死灵术的问题,但是使用 Spl 迭代器迭代多维数组很容易
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($array));
foreach($iterator as $key=>$value) {
echo $key.' -- '.$value.'<br />';
}
看
看起来是递归函数的好地方,尤其是。如果您的深度超过两个级别。
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
}
}
您应该能够使用嵌套的 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 $id => $assoc)
{
foreach($assoc as $part => $data)
{
// code
}
}
或者你需要递归的东西吗?我可以通过示例数据和您希望如何返回数据的上下文提供更多帮助。
考虑这个多维数组,我希望这个函数能有所帮助。
$n = array('customer' => array('address' => 'Kenmore street',
'phone' => '121223'),
'consumer' => 'wellington consumer',
'employee' => array('name' => array('fname' => 'finau', 'lname' => 'kaufusi'),
'age' => 32,
'nationality' => 'Tonga')
);
iterator($n);
function iterator($arr){
foreach($arr as $key => $val){
if(is_array($val))iterator($val);
echo '<p>key: '.$key.' | value: '.$val.'</p>';
//filter the $key and $val here and do what you want
}
}