PHP中的JSON数组是什么样的?

时间:2014-06-08 22:44:12

标签: php arrays json

我创建了一个简单的json字符串来解码成data数组,但是我很困惑如何在解码后迭代数组:

<?php
    $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

    $data = json_decode($json, true);

    for ($j = 0; $j < count($data); $j++) {
        echo "$j: $data[$j]<br>";
    }
?>

我似乎无法使这段代码工作,因为它说每个偏移都是未定义的,所以我认为问题源于我对数组解码后的内容的理解。

当我做var_dump(json_decode($json, true))时,我得到了这个结果:

array (size=5)
  'a' => int 1
  'b' => int 2
  'c' => int 3
  'd' => int 4
  'e' => int 5

那究竟是什么意思呢?数组indexes分别是'a','b','c','d'和'e'?如果是这样,那么我如何迭代这些中的每一个来打印出它们的所有值?

1 个答案:

答案 0 :(得分:1)

PHP中的数组与JavaScript(或Json)中的数组不同。但是,你在这里看到的是什么:

{"a":1,"b":2,"c":3,"d":4,"e":5}

实际上不是Json数组,而是Json对象。 abcde是该对象的属性(有点像PHP数组中的索引)。

要遍历此对象的属性,可以使用foreach循环:

$data = json_decode($json, true);

foreach ($data as $key => $value) {
    echo "$key: $value<br>";
}