数组在第二个foreach循环后丢失键

时间:2016-06-12 23:29:43

标签: php arrays foreach key

我用的是什么:

$raw = file_get_contents('url');
$raw = json_decode($raw,true);

foreach($raw['data'] as $spell){
  var_dump($spell);
}

我得到了什么:

array(1) {
    ["image"]=> array(2){
        ["w"]=> int(48)
        ["h"]=> int(48)
    }
}

现在一切都很好。

但是当我使用第二个循环(因为超过1个键和值)时,这样:

foreach ($raw['data'] as $spell){
    foreach ($spell['image'] as $image) {
        var_dump($image);
    }
}

我明白了:

int(48) int(48)

别无其他。
我希望得到:

array(2){
    ["w"]=> int(48)
    ["h"]=> int(48)
}

我做错了什么?

1 个答案:

答案 0 :(得分:0)

  

使用第二个foreach循环,您将浏览subArray   $raw["data"]["image"]只包含整数值而不包含整数值   数组,所以它打印出来。将第二个foreach循环更改为:   foreach ($spell['image'] as $key => $image) echo "$key => $value \n";然后你看到了你的钥匙。

我用过

foreach ($raw['data'] as $spell){
    print $spell['image']['x'];
}

感谢Rizier123的答案!