PHP的json_encode()函数的引号
(1)数组的索引和值都使用双引号
$a = ["id"=>1,"age"=>12,"name"=>"张三"];
var_dump(json_encode($a));
//结果:string(39) "{"id":1,"age":12,"name":"u5f20u4e09"}";
(2)数组的索引和值都使用单引号
$b = ['id'=>1,'age'=>12,'name'=>'张三'];
var_dump(json_encode($b));
//结果:string(39) "{"id":1,"age":12,"name":"u5f20u4e09"}"
说明:
比较结果可以看出,转成json后结果是一样的,
说明函数json_encode()转化后都为双引号。
注意,json字符串的外层是双引号,内层也是双引号,看起来是这样,转义的斜杠在打印到屏幕上时是不显示出来的。
下面的示例可以说明:
先定义json字符串,然后看是否可以转化成数组:
(1)直接使用上面打印出来的json字符串
$a = "{"id":1,"age":12,"name":"u5f20u4e09"}"; var_dump(json_decode($a,true));
结论:直接报错:Parse error: syntax error, unexpected 'id' (T_STRING) in ...
都是用双引号,报错。
(2)使用单引号把json数据引起来
$a = '{"id":1,"age":12,"name":"u5f20u4e09"}';//正确的json数据 var_dump(json_decode($a,true));
结论:正常运行,正常解析。
(3)外层还是用双引号,内层使用斜杠转义:
$a = "{"id":1,"age":12,"name":"u5f20u4e09"}"; var_dump(json_decode($a,true));
结论:正常运行,正常解析。
(4)外层使用双引号,内层使用单引号:
$a = "{'id':1,'age':12,'name':'u5f20u4e09'}"; var_dump(json_decode($a,true));
结果是NULL,也不是正常的json数据。
结论:
1、内层的索引和值必须是双引号;
2、外层是单引号时,内层的双引号不需要转义;
3、外层是双引号时,内层的双引号需要转义。