我已经创建了一个简单的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对象。a
、b
、c
、d
和e
是该对象的属性(有点像PHP数组中的索引)。
要迭代该对象的属性,可以使用foreach
循环:
$data = json_decode($json, true);
foreach ($data as $key => $value) {
echo "$key: $value<br>";
}