加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – json_encode()方法有内存限制吗?

发布时间:2021-07-06 05:23:07 所属栏目:大数据 来源: https://www.jb51.cc
导读:我试图回应一个由数组组成的json编码数组,但我不知道它不会让我打印那个东西.这是我的代码: ?PHPinclude_once('confi.PHP');header('Content-type: application/json');if ($_SERVER['REQUEST_METHOD'] == "POST"){ $lastRecord = isset($_POST['lastRecord

我试图回应一个由数组组成的json编码数组,但我不知道它不会让我打印那个东西.这是我的代码:

<?PHP

include_once('confi.PHP');
header('Content-type: application/json');

if ($_SERVER['REQUEST_METHOD'] == "POST")
{
    $lastRecord = isset($_POST['lastRecordID']) ? 
                      MysqL_real_escape_string($_POST['lastRecordID']) : "";

    $queryForTotalRec = MysqL_query("SELECT customer_id FROM `WebServiceTesting`.`sapphire` ORDER BY customer_id DESC LIMIT 1");
    $total_rec = MysqL_fetch_row($queryForTotalRec);

    if($total_rec){
        $queryForAllRecords = "SELECT * FROM `WebServiceTesting`.`sapphire` WHERE customer_ID BETWEEN %d AND %d";
       $get_all_recs = MysqL_query(sprintf($queryForAllRecords, $lastRecord, $total_rec[0]));

        $json = array();
        while($row = MysqL_fetch_assoc($get_all_recs)){

          $json[] = array("Status" => 1, "NewRecord" => $row);
        }

        print_r($json);
        echo json_encode($json);
   }else{
    $json = array("status" => 0, "Error_Message" => MysqL_error());
          echo json_encode($json);
    }
}else{

    $json = array("status" => 0, "Error_Message" => "Request Method not correct");
      echo json_encode($json);

}
@MysqL_close($conn);

错误:
格式错误的JSON:意外的’A’有时’我’

当我删除print_r行时,我得到:
没有收到回复
当我打印$json数组的计数iam得到153但没有其他输出.

我试过的事情:

我读了一些解决类似问题的解决方案,你需要使用array_values()
例如:

 echo json_encode(array_values($json));

同样的回答:’没有收到回复’

我也尝试将echo $json放在循环中,我知道这在概念上是错误的,但仍然得到预期的错误’语法错误’

此外,我试图回应通过foreach没有运气语法错误,但我可以看到原始输出但无法验证json.

只是对于print_r的信息,这是响应:

Array (
 [0] => Array ( 
     [Status] => 1 [NewRecord] => Array ( 
                   [customer_id] => 1241 
                   [firstName] => Katy 
                   [lastName] => Lest
                   [email] => klest@yahoo.com [phone] => 787012425
                                         )
               )
 [1] => Array ( 
      [Status] => 1 [NewRecord] => Array ( 
                    [customer_id] => 1242 
                    [firstName] => Hanah 
                    [lastName] => Morrisn 
                    [email] => road@gmail.com
                    [phone] => 144221275  )
              )
 [2] => Array (
       [Status] => 1 [NewRecord] => Array ( 
                    [customer_id] => 1243 
                    [firstName] => James 
                    [lastName] => McGrath
                    [email] => rosamcgrath@hotmail.com
                    [phone] => 79684312  )
             ) 
)

刚刚找到了一个答案,我仍然在寻找一个理由,如果有人可以提供帮助.我拉的唱片数量是150,所以我一次尝试了50条记录并且效果很好.任何人都知道我怎样才能真正为我的阵列分配更多内存,以便它只能一次性保存所有必需的数据?

我也试过给出准确的索引以及我认为数组内存不足但这甚至不起作用:

 $json = new SplFixedArray($difference);

非常感谢您的协助.

解决方法:

陷入黑暗:一些数据库行包含非ASCII字符(例如ü,é等).您的数据库连接设置为latin1,因此数据不是UTF-8编码的. json_encode需要UTF-8编码数据.如果你获取足够的行,那里会有包含非UTF-8数据的行,并且json_encode失败.只有很少的行,你碰巧没有遇到那些有问题的行.

通过输出echo json_last_error_msg()来测试它;在json_encode之后.

将数据库连接设置为UTF-8.请参见此处如何操作:UTF-8 all the way through

当你包含print_r时,浏览器抱怨无效JSON的原因很简单:因为PHP会输出大量不是JSON的垃圾,浏览器无法将其解码为JSON.

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读