无法遍历PHP中的数组

时间:2018-12-31 02:42:38

标签: php arrays foreach

我有一个看起来像这样的数组...

G.node['node']['a']['initial'] = 100
G.node['node']['a']['final'] = 10

G.node['node']['a']['initial'] = 500
G.node['node']['b']['final'] = 15

等通常,我将遍历该数组以获取所需的数据,如下所示……

min(G.node[node]['a']['final'],G.node[node]['b']['final']) / the initial attribute of the node that has the min final value. 
= 10/100

但是,由于某种原因,这个非常简单的foreach循环将不会输出我所期望的数据。循环不返回任何内容。我添加了

array(3) {
  [0]=>
  array(1) {
    [0]=>
    array(1) {
      ["@attributes"]=>
      array(1) {
        ["data"]=>
        string(23) "football games on today"
      }
    }
  }
  [1]=>
  array(1) {
    [0]=>
    array(1) {
      ["@attributes"]=>
      array(1) {
        ["data"]=>
        string(8) "football"
      }
    }
  }
  [2]=>
  array(1) {
    [0]=>
    array(1) {
      ["@attributes"]=>
      array(1) {
        ["data"]=>
        string(14) "football today"
      }
    }
  }
}

回显$ x;行到代码中,它将回显递增的x值,因此我知道是否正确遍历数组。

这已经花了很长的几天的时间,所以也许我只是精疲力尽而错过了一些非常简单的东西。但是我没看到。感谢您的任何帮助。非常感谢。

1 个答案:

答案 0 :(得分:0)

如果您最终使用深度嵌套的数组,则可以使用array_walk_recursive来收集数组“叶”的键和值:

<?php

$data = 
[
    [
        [
            'wanted' => 'foo'
        ],
    ],
    [
        [
            'wanted'=> 'bar'
        ],
        'dead'=>'parrot'
    ]
];

array_walk_recursive($data, function($v, $k) use (&$wanteds) {
    if($k==='wanted')
        $wanteds[]=$v;
});
var_export($wanteds);

输出:

array (
    0 => 'foo',
    1 => 'bar',
  )

请注意对叶键进行条件检查,以仅收集所需的属性。

然后您可以轻松地遍历生成的数组。