我创建了一个简单的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'?如果是这样,那么我如何迭代这些中的每一个来打印出它们的所有值?
答案 0 :(得分:1)
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>";
}