json_encode不显示所有数组值

时间:2018-02-21 10:04:46

标签: php arrays json

我有一个PHP脚本,它从表中获取所有记录并将其编码为JSON。该表共有 246条记录echo count();也会返回246.

问题是,每当我使用json_encode时,它根本不显示数组中的值,我看到的只是一个空白页面。但是如果我将记录数减少到13而不是246,它就可以工作并显示编码的JSON结果。我也尝试将我的php.ini文件中的memory_limit增加到4095M,但没有用。

$result = mysqli_query($con, "SELECT * FROM cities");

if (mysqli_num_rows($result) > 0) {
     $response["cities"] = array();
     $city = array();

     while($row = mysqli_fetch_assoc($result)) {
          $city[] = $row;
          array_push($response["cities"], $city);
     }

     $response["success"] = 1;
     echo json_encode($response);
}

3 个答案:

答案 0 :(得分:2)

尝试以下内容,您将了解到底发生了什么:

$json = json_encode($response);

if ($json)
    echo $json;
else
    echo json_last_error_msg();
  

json_last_error_msg() - 返回最后一个json_encode()或json_decode()调用的错误字符串

答案 1 :(得分:0)

数组“city”正在针对每个调用进行扩展,并且您将在循环中的每次迭代中推送完整数组。

尝试:

while($row = mysqli_fetch_assoc($result)) {
          array_push($response["cities"], $row);
     }

应该有效

答案 2 :(得分:0)

$response数组推送$row移至$cities数组中。在推送所有城市后,在json_encode();功能中设置城市和响应,如此echo json_encode(array("cities"=>$cities, "success"=>1));

if (mysqli_num_rows($result) > 0) {
     $cities = array();

     while($row = mysqli_fetch_assoc($result)) {
          array_push($cities, $row);
     }

     echo json_encode(array("cities"=>$cities, "success"=>1));
}