PHP的json_encode()函數的引號
(1)數組的索引和值都使用雙引號
$a = ["id"=>1,"age"=>12,"name"=>"張三"];
var_dump(json_encode($a));
//結果:string(39) "{"id":1,"age":12,"name":"\u5f20\u4e09"}";
(2)數組的索引和值都使用單引號
$b = ['id'=>1,'age'=>12,'name'=>'張三'];
var_dump(json_encode($b));
//結果:string(39) "{"id":1,"age":12,"name":"\u5f20\u4e09"}"
說明:
比較結果可以看出,轉成json后結果是一樣的,
說明函數json_encode()轉化后都為雙引號。
注意,json字符串的外層是雙引號,內層也是雙引號,看起來是這樣,轉義的斜杠在打印到屏幕上時是不顯示出來的。
下面的示例可以說明:
先定義json字符串,然后看是否可以轉化成數組:
(1)直接使用上面打印出來的json字符串
$a = "{"id":1,"age":12,"name":"\u5f20\u4e09"}"; var_dump(json_decode($a,true));
結論:直接報錯:Parse error: syntax error, unexpected 'id' (T_STRING) in ...
都是用雙引號,報錯。
(2)使用單引號把json數據引起來
$a = '{"id":1,"age":12,"name":"\u5f20\u4e09"}';//正確的json數據 var_dump(json_decode($a,true));
結論:正常運行,正常解析。
(3)外層還是用雙引號,內層使用斜杠轉義:
$a = "{\"id\":1,\"age\":12,\"name\":\"\u5f20\u4e09\"}"; var_dump(json_decode($a,true));
結論:正常運行,正常解析。
(4)外層使用雙引號,內層使用單引號:
$a = "{'id':1,'age':12,'name':'\u5f20\u4e09'}"; var_dump(json_decode($a,true));
結果是NULL,也不是正常的json數據。
結論:
1、內層的索引和值必須是雙引號;
2、外層是單引號時,內層的雙引號不需要轉義;
3、外層是雙引號時,內層的雙引號需要轉義。
