尝试在PHP中读取StdClass对象

3

我在PHP中解码了一个包含键和值的JSON数组,JSON如下(为了更好的理解已经缩短)::

[{"code":"123"},{"identification":"Some item"},{"price":"$20"}]

经过我使用 json_decode 函数后,它的样子如下:

Array ( [0] => stdClass Object ( [code] => 123 ) [1] => stdClass Object ( [identification] => Some item ) [2] => stdClass Object ( [price] => $20 ) )

如何同时读取键和值?

我已经在 Stack Overflow 上尝试搜索并尝试了类似于以下内容的代码:

foreach ($jarray as $key) {
    echo 0->$key;
}

会抛出500(ISE)错误。

也尝试了这个:

foreach ($jarray as $key => $value) {
    echo $key;
    echo $value;
}

还会抛出500错误。

我不知道如何完成这个任务...

编辑: 基本上,我只想遍历整个东西,并在每次迭代时获取键和值,就像这样:

code - 123
identification - Some item
price - $20
...

在你的 json_decode() 调用中,将 true 添加为第二个参数。 - bassxzero
$key是一个数组/对象,所以你不能直接打印输出它。如果你查看了日志,你就会看到“将数组转换为字符串”或“无法将stdClass类的对象转换为字符串”。 - aynber
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Blake
使用 var_dump() 比尝试 echo 输出更加宽松,以备将来参考。 - Blake
@Blake 我尝试执行 $jarray[0],它返回了 array(1) { ["code"]=> string(3) "123" },但是现在我该如何获取字符串 "code" 而不指定它呢?我尝试了 $jarray[0][0],但它返回了 NULL... 基本上,我只想遍历整个数组并每次获取键和值。 - Fusseldieb
@Blake 感谢你的 var_dump(),我之前不太清楚它的作用,现在经过一番搜索,我明白了。 - Fusseldieb
2个回答

2
$json = '[{"code":"123"},{"identification":"Some item"},{"price":"$20"}]';
$jarray = json_decode($json, true);

foreach ($jarray as $value) {
    foreach ($value as $key => $val) {
        echo $key;
        echo $val;
    }
}

哇!完美无缺。感谢您的帮助。 - Fusseldieb
@bassxzero 如果不将 json_decode() 转换为数组而不是对象,这段代码本来可以正常工作的。 - Blake
@bassxzero 谢谢你也 :) - Fusseldieb
@Fusseldieb提醒我这段代码可以正常工作,看来我只是有点过于苛求了。虽然感谢你的“感谢”,哈哈。 - bassxzero

0
I hope so it will reduce loop process confusion and simple to do this task. 


$text = '[{"code":"123"},{"identification":"Some item"},{"price":"$20"}]';
$array = json_decode($text);**strong text**
foreach($array as $value)
{
    $array = (array)$value;
    $x = each($array);
    echo $x['key'];
    echo "====>>>>";
    echo $x['value'];
    echo "<br/>";
}

你的回答比上面被接受的回答更好在哪里? - jhhoff02

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