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

没有json_encode(),如何将数组编码为JSON?

徐昕
2023-03-14
问题内容

我对PHP非常陌生,但是现在我必须帮助我的朋友解决PHP问题。

他购买了一个基于PHP的网站,将其上传到主机后,发现错误:

Fatal error:  Call to undefined function json_encode() in xxx.php

代码很简单:

echo json_encode(array(
    'result' => true,
));

它发送一个json到客户端。

我知道json_encode是在php 5.2之后添加的,但是他的主机的PHP版本是PHP 5.1.2,所以这就是它报告错误的原因。

但是我们无权升级主机的PHP版本,因此我必须修改代码。如何让它不带JSON返回客户端json_encode

客户端浏览器中的网页将运行以下javascript代码,以获取并检查json:

jQuery.ajax({ 'url': '...', ...,
    'success':function(json) {
        if(json != null && json.result == true) {
           // do something
        }
    }
}

非常感谢!

更新

由于我无权升级任何东西或在该主机上安装新库,因此我唯一能做的就是更改代码。但是我几乎对php一无所知,我也不知道如何使用3rd
party库。最后,我将其修复为:

在php中:

echo '{"result":"true"}';

在javascript中:

if(json!=null && json.result=="true") {
    // do something
}

问题答案:

首先:您应该 强烈 考虑升级,因为不再支持PHP
5.1.x和5.2.x。您表示您没有这样做的权利,但是如果您是付费客户,那应该有所帮助。从最新的PHP
5.3.6版本开始
不推荐使用PHP 5.2 。

PHP.net上的用户提供了执行相同功能的自定义函数。您可以将其重命名为json_decode()并将其包装在一条if (!function_exists('json_encode'))语句中:

if (!function_exists('json_encode')) {
     function json_encode() {
         // do stuff
     }
}


 类似资料:
  • 问题内容: 我在使用PHP json_encode函数时遇到问题。它将数字编码为字符串,例如 变成 当js遇到这些值时,它将它们解释为字符串,并且对它们的数字运算失败。有谁知道某种防止将数字编码为字符串的方法?谢谢! 问题答案: 我做了一个非常快速的测试: 如果我没记错的话,这似乎就像你所描述的那样? 我得到的输出: 因此,在这种情况下,整数尚未转换为字符串。 不过,这可能取决于我们使用的PHP版

  • 问题内容: 我正在尝试对从Zend_DB查询返回的数组进行json_encode。 var_dump给出:(手动添加0个成员不会更改图片。) 编码后的字符串如下所示: 我需要的是: php.ini / json_encode文档说的应该是什么样子。 问题答案: 您如何设置初始阵列? 如果您将其设置为: 那么您就没有一个带有数字索引而是一个字符串的数组,并且该数组将转换为JS world中的一个对象

  • 我试图将mysql查询的结果作为json返回,但是json_encode函数总是返回空白,尽管数组包含元素。 检索查询并转换为php数组: 然后返回结果: 这不返回任何内容,而我在回显以下语句时确实得到了结果: 返回“数组” 返回“Youreka!demo” 你知道我做错了什么吗? ID:2,名字:尤瑞卡!演示,地址:Italiëlei 26,邮政编码:2000,城市:Antwerpen,国家:B

  • 问题内容: 我在PHP中有以下数组: 我想将其JSON编码为JSON数组,产生类似以下内容的字符串: 但是当我调用此数组时,得到以下信息: 这是一个对象而不是数组。 我怎样才能将我的数组编码为数组呢? 问题答案: 您正在观察此行为,因为您的数组不是顺序的-它具有键和,但没有键。 仅具有数字索引是不够的。仅当您的PHP数组是顺序的时,即如果其键为0、1、2、3,…时,才会将PHP数组编码为JSON数

  • 问题内容: 我有一个像这样打印的数组 如果我得到这样的东西 为什么名称未编码(例如0、1、2、3等)?以及如何使它出现在json代码中?完整的代码如下 问题答案: 您可以通过设置 JSON_FORCE_OBJECT 选项来强制使用对象,尽管您要通过数字键传递数组: 然后,返回的值将是带有数字键的JSON对象: 但是,只有在确实需要对象时才应该这样做。

  • 我试图调用一个类似如下的实度函数: 使用web3j,我将创建与下面类似的函数,但是我不太确定如何表示以Solidity表示的结构的顺序。 关于我应该如何表示结构的任何指示? 谢了。