【问题标题】:json_encode only returns the first element of an array?json_encode 只返回数组的第一个元素?
【发布时间】:2011-07-12 18:47:31
【问题描述】:

我正在使用 json_encode 从数组创建 JSON 对象。它们的数组有几百个元素长,但 json_encode 似乎只返回数组的第一个元素。

这是 json_decode 的限制,还是我使用了错误的语法来读取 JSON 对象?

一小段代码: 我在 PHP 中创建数组:

$getarrayforjson = mysql_fetch_array($result);

在 javascript 中,我将其设为变量:

var my_array = <?php echo json_encode($getarrayforjson); ?>

在控制台中输入“my_array”会给我一个类似于 JSON 的漂亮响应,但仅限于第一个元素。

当我在代码中使用 JSON 时,例如 my_array.title 或 my_array[4],我总是得到相同的结果。

我认为我的语法错误,但不知道如何修复它。我是使用 json_encode 的新手。

【问题讨论】:

    标签: php json


    【解决方案1】:
    $getarrayforjson = mysql_fetch_array($result);
    

    只有一个结果。试试这个:

    <?php
    while( $row = mysql_fetch_array( $result ) ) {
        $json[] = $row;
    }
    echo json_encode( $json );
    

    【讨论】:

    • 还将 MYSQL_ASSOC 添加到 mysql_fetch_array()
    • 贝瑞,感谢您快速正确的回答!为了完成这个想法,我从 JSON 对象中获取标题,如下所示:my_array[settings.activeImage].title。这让我可以将数据库中的标题添加到灯箱中的每个图像。(可能有更简单的方法可以做到这一点,但这很有效。)
    【解决方案2】:

    尝试使用print_r()print() 而不是echo

    var my_array = &lt;?php print_r(json_encode($getarrayforjson)); ?&gt;

    我自己也遇到过这个问题,这也让我感到困惑。 json_encode() 返回一个字符串,因此我希望 echo 会返回要解码的整个字符串,但在某些情况下它不会。

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多