如何在PHP中循环遍历JSON对象的值?

10

我有一个JSON对象,我想循环遍历其中的值:

$json = '{"1":a,"2":b,"3":c,"4":d,"5":e}';
$obj = json_decode($json, TRUE);
for($i=0; $i<count($obj['a']); $i++) {
    echo $i;
}

我希望$i显示对象中的值abcde


print_r($obj) - u_mulder
$i<count($obj['a']) 应该改为 $i<count($obj)。你想要计算数组中的总元素数,而不是第一个值中的元素数,在这种情况下,第一个值为0。或者使用 foreach 更易读。 - Andrei
第四行代码如下:for($i=0; $i<count($obj); $i++) { - JSking
2
你的 JSON 无效。所有字母字符都需要用引号括起来。{"1": "a", ... etc} - M. Eriksson
2个回答

30
尝试使用。
$json = '{"1":"a","2":"b","3":"c","4":"d","5":"e"}';
 $obj = json_decode($json, TRUE);

foreach($obj as $key => $value) 
{
echo 'Your key is: '.$key.' and the value of the key is:'.$value;
}

9

最简单的迭代方式是使用foreach,这样你就不需要关心索引,代码如下:

foreach($obj as $value) {
 echo $value;
}

例如,您在$obj中没有索引0。从我看到的内容来看,它从1开始。这样就可以使用任何索引(不仅限于数字)了。

1
这与上面的答案有何不同?上面的答案也适用于任何 $key。 - Pancho
@Pancho 这告诉读者在foreach循环中不需要使用关键字,它也可以正常工作。 - Lampe2020
1
@Lampe2020 我明白这些回答是同时出现的,我猜这就是为什么会发生这种情况,并且这个是真正的第一个回答。然而,如果时间不是问题,我坚持认为只需要其中一个回答,另一个可以在第一个回答下添加评论。 - Pancho
@Pancho 可能是的,你说得对。 - Lampe2020

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接