我正在使用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。
答案 0 :(得分:11)
$getarrayforjson = mysql_fetch_array($result);
只有一个结果。试试这个:
<?php
while( $row = mysql_fetch_array( $result ) ) {
$json[] = $row;
}
echo json_encode( $json );
答案 1 :(得分:0)
尝试使用 print_r()
或 print()
代替 echo
。
var my_array = <?php print_r(json_encode($getarrayforjson)); ?>
我自己也遇到过这个问题,它也让我感到困惑。 json_encode()
返回一个字符串,因此我希望 echo
会返回要解码的整个字符串,但在某些情况下它不会。