当前位置: 首页 > 面试题库 >

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

呼延鸿畅
2023-03-14
问题内容

我试图回显由数组组成的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”有时是“ I”

当我删除print_r行时,我会得到:没有收到响应当我在打印$ json数组时,我会得到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();after进行测试json_encode

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



 类似资料:
  • 问题内容: 我正在使用PHP代理来获取文件的内容。我想使用功能强大的jQuery选项搜索该文件,而不必在PHP中编写各种查询。这是我的PHP代码: 如果加载的页面太大,PHP将读取整个文档,但是json_encoding它只会提供文件的第一部分,而不是整个文件。我找不到有关JSON传递数据的大小限制的任何信息,但显然有一个。 问题:是否有变通办法来防止仅部分文件被传输? 我需要从其他域中获取文件,

  • 我想通过NFC从Arduino向手机发送信息。 为此,我有一个PN532模块。我想要发送信息的方式是使用模块模拟NFC标签并从手机读取信息。我不想使用真正的NFC卡的原因是内存限制。它们中的大多数都有近800字节的内存,而内存更多的内存则比较昂贵。如果我模拟带有PN532模块的卡,我还会有一些内存限制吗? 我在文件中发现了这一点: PN532-HCE 我认为重要的是APDU字节限制。我不是NFC方

  • 我们有一个可怕的经验与gae围棋。当我们的应用程序是一个免费的,我们从来没有超过软私有内存限制的问题。我们抢了定额,因此决定付款。我们每天的预算定为3美元。付费服务激活后,我们可以再次使用该网站,超额配额消失了。几个小时后,我们得到了这个超软私有内存限制,除了这个,再也看不到任何东西了。我试图清除数据存储中的一些大数据,禁用内置插件,但仍然没有运气。 我在代码中做了一些测试,以确定故障来自何处。删

  • 我在本地主机上的一个项目中遇到了一个问题,我无法增加PHP内存限制设置。 我已经尝试在php.ini配置中直接增加它: 我尝试在project. htaccess文件中增加它: 我尝试过在PHP控制器的函数中直接增加它:

  • 问题内容: 我正在尝试找到一种方法来限制Python VM可用的内存,就像Java VM中的选项“ -Xmx”一样。(这个想法是为了能够处理MemoryError异常) 我不确定该选项是否存在,但是可能存在使用操作系统命令“隔离”进程及其内存的解决方案。 谢谢。 问题答案: 在* nix上,您可以使用该命令,特别是-m(最大内存大小)和-v(虚拟内存)。

  • 我一直在尝试增加MAMP(MacOSX)中的php内存限制。我使用的PHP版本是5.4。1.0. 我读过关于为MAMP Pro创建新模板的内容,但我使用的是MAMP的标准版本。 我已经尝试了下面的所有方法,但似乎没有任何效果。任何帮助都将不胜感激。 谢谢你抽出时间。 我已在以下文件中将以下内容从32M更改为128M: /Applications/MAMP/conf/php5.4.10 ; 然后我完