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

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

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

===============>>#1 票数:40

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

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

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

看到

===============>>#2 票数:40 已采纳

嵌套两个foreach循环

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

===============>>#3 票数:13

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

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 票数:5

您应该能够使用嵌套的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";
    }
}

===============>>#5 票数:0

考虑一下这个多维数组,我希望这个函数能有所帮助。

$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
    }

}

===============>>#6 票数:0

你可以循环遍历所有“part [n]”项并使用isset查看它们是否确实存在?

===============>>#7 票数:0

我真的不确定你的意思 - 肯定有一对foreach循环能满足你的需求吗?

foreach($array as $id => $assoc)
{
    foreach($assoc as $part => $data)
    {
        // code
    }
}

或者你需要一些递归的东西? 我将能够通过示例数据和您希望数据返回的上下文来提供更多帮助。

  ask by Thomas Owens translate from so

未解决问题?本站智能推荐:

5回复

在PHP中创建关联数组

我有一个多维数组。 每个数组中的第一项是申请号 ,其余每个数组是出版物号 。 我得到每个数组的第一个项目(申请号)和最后一个项目(最新的出版号),像这样 现在,我有每个内部数组的应用程序编号和发布编号。 我想从应用程序编号和发布编号创建一个关联数组。 密钥应为申请号
3回复

在php中从复杂的关联数组中提取数据并放入新数组中

我有一个看起来像这样的复杂数组: 我想将其转换为如下所示; 我写了一些代码来解决这个问题: 不幸的是,它仅检索输入数组的最后一个元素。 有人可以提供更多帮助吗? 非常感谢你。
3回复

将关联数组传递给PHP中的另一个关联数组

抱歉,这是一个简单的解决方法-我在PHP中传递一些数组时遇到问题。 我有两个数组设置,例如: 现在,如果我在这些数组上执行print_r(),它们将按预期返回结果。然后将2个数组插入新数组,如下所示: 再次使用print_r返回一个包含两个数组的新数组,但它不是关联的。 但是
3回复

需要高效重组一个复杂的PHP关联数组[关闭]

在我的数据挖掘项目中,我给出了一个复杂的,巨大的多维数组,其中包含了我需要的所有信息,除了我必须在它处理之前执行“修复”。 我已经写了一些代码,是以问题的照顾,但它采取的方式太长巨大的数据量我要“修理”,我希望有人能帮助我找到更有效的解决方案。 从本质上讲,我正在使用的数组类型首先由一个
2回复

索引数组中的PHP关联数组

我有一个$string : 我将它变成以下结构的$array : 使用以下代码: 但是,我无法访问索引$array内的关联$array 例如,这不起作用: 即使echo implode(', ', array_keys($array[0])); 得到:
1回复

如何在Php中更改关联数组的数组结构

我想更改阵列,我该如何进行更改。 Array ( [0] => 53720 [1] => Array( ['Build Quality'] => 1=>10, 2=>9, 3=>7 ['Versatality'] => 1=>9, 2=>
6回复

在关联数组中从php变量中插入元素

我有这样的条件字符串: 我的$data数组是: 上面的echo $cnd显示'use_funds'=>'no' ,但是var_dump($data)显示array 0 => string ''use_funds'=>'no'' (length=17) 。 而且
4回复

在PHP中,过滤关联数组

在PHP中,是否有任何内置函数可以打开 成 ? 我已经使用JSON来描述上述对象,但这只是我的关联数组数组的概念性表示。 我不想手动循环-我可以在一行中插入的简短而优雅的内容会很好。
4回复

使用多个条件在php中对关联数组进行排序

考虑以下数组 在这里,我想用head和membkey排序。 同一个membkey元素的顶部元素应该有'head = y'并且回显为, 我尝试了如下 请给我任何建议。
3回复

在PHP中回显二维关联数组

我希望以这种格式回显数据 [0]-[名称] [说明] [1]-[名称] [说明] [2]-[名称] [说明] 我创建了两个foreach循环来尝试回显每个循环的名称和描述,如下所示: 但在第二个循环中收到关于为foreach()提供的无效参数的错误。 目前我的