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


What does a JSON array look like in PHP?

我已经创建了一个简单的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'分别吗?如果是这样,那么我如何遍历这些元素以打印出它们的所有值?

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>";
}