致命错误:无法使用stdClass类型的对象作为数组 - 无法访问JSON

时间:2014-04-17 17:36:59

标签: php json

我正在尝试循环嵌套的JSON并打印结果,但是当我尝试时,我得到了上述错误。

<?php

        $json = json_decode($orderItems);

        foreach ($json as $key) {

            ?><p>Product: <?php echo $json[$key] -> {'name'}; ?> | Quantity: <?php echo $json[$key] -> {'quantity'}; ?></p><?php

        }

    ?>

的print_r($ JSON)

stdClass对象([Tom] =&gt; stdClass对象([name] =&gt; Tom [数量] =&gt; 3)[Harry] =&gt; stdClass对象([name] =&gt; Harry [数量] = &gt; 1))

2 个答案:

答案 0 :(得分:3)

您将$ json变量引用为关联数组和对象的混合。 看看下面的代码:

<?php

    // return an assoc array
    $json = json_decode($orderItems, true);

    foreach ($json as $orderItem) {
        echo '<p>Product: ' . $orderItem['name'] . ' | ';
        echo 'Quantity: ' . $orderItem['quantity'] . '</p>';
    }

?>

答案 1 :(得分:0)

foreach循环没有那样工作,而php有不同的语法...... 你所谓的$key实际上是数组中的每个元素。

你正在寻找的东西可能是:

foreach($json as $element) {
    ?><p>Product: <?php echo $element['name']; ?> | Quantity: <?php echo $element['quantity']; ?></p><?php
}