我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

目前,JSON格式已成为众多数据交换方式中的佼佼者,众多网站的API服务几乎普遍接纳并支持这一格式。

自5.2版本起,PHP原生库中引入了两个函数,一个用于数据编码,另一个则用于数据解码。

一、()

此函数主要用于将数组与对象转化为JSON格式。以下是一个数组转换的示例:

定义数组 $arr,其元素包括键 'a' 对应值 1,键 'b' 对应值 2,键 'c' 对应值 3,键 'd' 对应值 4,以及键 'e' 对应值 5。

echo ($arr);

结果为

该对象包含五个键值对,其中键“a”对应的值为1,键“b”对应的值为2,键“c”对应的值为3,键“d”对应的值为4,键“e”对应的值为5。

再看一个对象转换的例子:

$obj->body = ' post';

$obj->id = 21;

$obj-> = true;

$obj-> = 1;

$obj-> = NULL;

echo ($obj);

结果为

"body":" post",

"id":21,

"":true,

"":1,

"":null

由于JSON格式仅能识别UTF-8编码的字符,因此括号内的参数必须采用UTF-8编码。若不遵循此规定,可能会导致输出结果为空字符或null。特别是在处理中文编码或外文采用ISO-8859-1编码时,这一点尤为关键。

二、索引数组和关联数组

PHP具备两种类型的数组功能,一类是仅存储"值"的索引数组,另一类则是保存"名值对"的关联数组。

由于系统不支持关联数组这一特性,因此在进行转换时,括号内的索引数组会被转换成数组形式,而关联数组则会转换成对象形态。

比如,现在有一个索引数组

创建数组 $arr,包含元素 'one'、'two' 和 'three'。

echo ($arr);

结果为:

"one","two","three"

如果将它改为关联数组:

定义数组 $arr,其包含以下键值对:键 '1' 对应值 'one',键 '2' 对应值 'two',键 '3' 对应值 'three'。

echo ($arr);

结果就变了:

该物品不得进行任何形式的修改,编号为一、二、三的特定部分亦不可更改。

注意,数据格式从""(数组)变成了"{}"(对象)。

如果你需要将"索引数组"强制转化成"对象",可以这样写

( ()$arr );

或者

( $arr, );

三、类(class)的转换

下面是一个PHP的类:

class Foo {

const = '404';

$ = 'this is ';

$ = 'this is !';

$ = 'this be ';

() {

self::;

现在,对这个类的实例进行json转换:

$foo = new Foo;

$ = ($foo);

echo $;

输出结果是

{"":"this is "}

观察可知,除了那些公开的变量之外,其他诸如常量、私有变量以及方法等元素均已消失不见。

四、()

此函数旨在实现json格式文本向PHP内部数据类型的转换。以下是一个具体的应用示例:

$json = '{"foo": 12345}';

$obj = ($json);

print $obj->{'foo'}; // 12345

通常情况下,()总是返回一个PHP对象,而不是数组。比如:

该JSON对象包含五个键值对,其中键“a”对应的值为1,键“b”对应的值为2,键“c”对应的值为3,键“d”对应的值为4,键“e”对应的值为5。

(($json));

结果就是生成一个PHP对象:

()#1 (5) {

=> int(1)

=> int(2)

=> int(3)

=> int(4)

=> int(5)

若需强制构建PHP的关联数组,必须添加一个参数值为true。

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

(($json),true);

结果就生成了一个关联数组:

array(5) {

=> int(1)

=> int(2)

=> int(3)

=> int(4)

=> int(5)

五、()的常见错误

下面三种json写法都是错的,你能看出错在哪里吗?

$ = "{ 'bar': 'baz' }";

$ = '{ bar: "baz" }';

$ = '{ "bar": "baz", }';

对这三个字符串执行()都将返回null,并且报错。

首个错误在于,在json格式中,分隔符号括号必须采用双引号,不可用单引号代替。其次,json中的名值对中,"名"部分即冒号左侧的内容,无论何种情形,都必须用双引号括起来。最后,需要注意的是,在序列的最后一个值之后,是不允许添加逗号的。

此外,JSON仅适用于表达对象以及数组,若将括号应用于字符串或数字,系统将输出null值。

(("Hello World")); //null

二维码
扫一扫在手机端查看

本文链接:https://by928.com/9551.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线