PHP的json_encode()函數的引號


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、外層是雙引號時,內層的雙引號需要轉義。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM