我对这个阵列和foreach做错了什么?

时间:2011-12-15 07:34:22

标签: php arrays json foreach

我有两个数组,我可以使用$ result [0]或$ result [1]。

我做了print_r($results[0])print_r($result[1])。他们都给了我想要的两个不同的阵列。

但是,如果我这样做,我将无法获得任何信息

foreach($results[0] as $result){
    echo $result['data']['id'];
}

我希望能够区分这两个数组,所以我希望能够从这两个数组中获取信息。

我也在$ results上做了一个json_decode。

如果有人可以帮助我,那就太好了!感谢

编辑:

Array
(
    [nonsense] => Array
        (
            [more] => information
            [less] => less stuff
        )


    [data] => Array
        (
            [0] => Array
                (
                    [id] => some id
                )
            [1] => Array
                (
                    [eh] => some eh
                )
        )
)

Array
(
    [more stuff] => Array
        (
            [more] => information
            [less] => less stuff
        )


    [more data] => Array
        (
            [0] => Array
                (
                    [freshstuff] => some id
                )
        )

)

1 个答案:

答案 0 :(得分:4)

在您的示例中,$result['data']['id']不存在。 id另一个数组中。

foreach在这种情况下无用,因为数据不统一。当您遍历$results[0]时,您将在第一次迭代时获得nonsense密钥,在第二次迭代时获得data密钥。此外,nonsense键是键/值对的数组,而data键是键/值对的数组数组。

$results[0]$results[1] 似乎统一,但它们包含不同的密钥。

echo $results[0]['data'][0]['id'], "<br>\n";
echo $results[0]['data'][1]['eh'], "<br>\n";

echo $results[1]['more data'][0]['freshstuff'], "<br>\n";

<强>更新

foreach()不适用于这种数组。在这种情况下,array_walk_recurisive()通常是一个不错的选择。

<pre>
<?php

$results = array(
  array(
    'nonsense' => array(
      'more' => 'information',
      'less' => 'less stuff'
    ),


    'data' => array(
      array('id' => 'some id'),
      array('eh' => 'some eh')
    )
  ),

  array(
    'more stuff' => array(
      'more' => 'information',
      'less' => 'less stuff'
    ),


    'more data' => array(
      array('freshstuff' => 'some id'))

  )
);


function test_print($item, $key)
{
    echo "$key: $item\n";
}

array_walk_recursive($results, 'test_print');

?>
</pre>

显示器

more: information
less: less stuff
id: some id
eh: some eh
more: information
less: less stuff
freshstuff: some id

根据您的需要,您可能还会发现其他一些array functions有用。