【问题标题】:Fatal error: Cannot use object of type stdClass as array - Can't access JSON致命错误:无法使用 stdClass 类型的对象作为数组 - 无法访问 JSON
【发布时间】:2014-06-02 02:50:49
【问题描述】:

我正在尝试遍历我的嵌套 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] => stdClass 对象([name] => Tom [quantity] => 3)[Harry] => stdClass 对象([name] => Harry [quantity] => 1))

【问题讨论】:

  • 您的$json 是一个对象,而不是一个数组,需要-&gt; 而不是[]。请发布print_r($json),以便我们查看其内容。
  • 或将true 作为第二个参数传递给json_decode() 以强制将其转换为关联数组而不是匿名对象。

标签: php json


【解决方案1】:

您将 $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>';
    }

?>

【讨论】:

    【解决方案2】:

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

    你正在寻找的可能是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-08
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      相关资源
      最近更新 更多