php json_encode()函數返回對象和數組問題


php json_encode() 函數格式化數據時會根據不同的數組類型格式化不同類型的json數據

  索引數組時

<?php
$arr = [1,2,3,4,5];
print_r(json_encode($arr));
//輸出 [1,2,3,4,5]

  關聯數組時

<?php
$arr = [
    "name"=>"Bob",
    "job"=>"IT"
];
print_r(json_encode($arr));
//輸出  {"name":"Bob","job":"IT"}

  空數組

<?php
$arr = [];
print_r(json_encode($arr));
//輸出 []

索引數組時生成的是數組類型數據,關聯數組時生成的是對象類型的數據,空數組返回的是數組類型。但是當碰到同一個字段返回的數組可能是關聯數組也可能是空數組時,就會在app端出現數據類型不一致的問題,解決方式有兩種:

一,使用 json_encode的 JSON_FORCE_OBJECT 模式

<?php
$arr = [];
print_r(json_encode($arr,JSON_FORCE_OBJECT));
//輸出 {}

但是這種存在一個問題,它會把所有的數據都以對象的方式返回,包括索引數組:

<?php
$arr = [1,2,3,4,5,6];
print_r(json_encode($arr,JSON_FORCE_OBJECT));
//輸出  {"0":1,"1":2,"2":3,"3":4,"4":5,"5":6}

二,定義空數據時使用 ArrayObject 定義而不適用  Array() 或者  [] 

<?php
$arr = new ArrayObject();
print_r(json_encode($arr));
//輸出 {}

到這里我們可以隨意的控制返回的json數據中數據的類型啦!!!!


免責聲明!

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



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