最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解PHP json_decode()函數(shù)的使用方法

 更新時間:2023年08月18日 10:27:36   作者:士別三日wyx  
PHP中的json_decode()函數(shù)是用于將JSON字符串解碼為PHP變量的函數(shù),它將JSON字符串轉(zhuǎn)換為與其對應(yīng)的PHP數(shù)據(jù)類型,例如,將JSON字符串轉(zhuǎn)換為關(guān)聯(lián)數(shù)組、對象或其他數(shù)據(jù)類型,本文就給大家介紹一下PHP json_decode()函數(shù)的使用方法,需要的朋友可以參考下

json_decode() 可以對JSON字符串「解碼」,并轉(zhuǎn)換為PHP變量。

語法

mixed json_decoce( $json_str, assoc, depth, options )

參數(shù)

  • $json_str :需要解碼的JSON字符串,只能處理UTF-8編碼的數(shù)據(jù)
  • assoc :布爾類型,true返回數(shù)組,(默認)false返回對象
  • depth :整數(shù)類型,遞歸的深度(默認512層),最大 2147483647 層
  • options :二進制掩碼,目前只支持 JSON_BIGINT_AS_STRING

返回值

  • 通過恰當?shù)念愋停祷亟獯a后的數(shù)據(jù),默認返回對象類型。
  • JSON格式錯誤 或 超過遞歸解析深度 或 false 或 null,就返回null。

一、返回數(shù)組類型

json_decode() 默認返回「對象」類型,如果想返回「數(shù)組」類型,就將 assoc 參數(shù)設(shè)置為true。 assoc 參數(shù)可省略,默認為false。

實例:

var_dump(json_decode('{"key1":"value1","key2":"value2"}'));
var_dump(json_decode('{"key1":"value1","key2":"value2"}', true));

輸出:

object(stdClass)#1 (2) {
  ["key1"]=>
  string(6) "value1"
  ["key2"]=>
  string(6) "value2"
}
array(2) {
  ["key1"]=>
  string(6) "value1"
  ["key2"]=>
  string(6) "value2"
}

options 參數(shù)設(shè)置為 JSON_OBJECT_AS_ARRAY 時,也可以轉(zhuǎn)換成「數(shù)組」類型。

實例:

var_dump(json_decode('{"key1":"value1","key2":"value2"}', JSON_OBJECT_AS_ARRAY));

輸出:

array(2) {
  ["key1"]=>
  string(6) "value1"
  ["key2"]=>
  string(6) "value2"
}

二、JSON的鍵和值必須用雙引號

「解析」的JSON字符串,最外側(cè)用單引號包裹,里面的鍵值對用「雙引號」包裹,才能正常解析,否則會返回null。

實例:

var_dump(json_decode('{"key1":"value1","key2":"value2"}'));
var_dump(json_decode("{'key1':'value1','key2':'value2'}"));

輸出:

object(stdClass)#1 (2) {
  ["key1"]=>
  string(6) "value1"
  ["key2"]=>
  string(6) "value2"
}
NULL

這時,(PHP 7.3以上)可以設(shè)置參數(shù) options 為JSON_THROW_ON_ERROR,使其在解析錯誤時拋出異常,方便我們及時處理錯誤。

三、返回null問題

除了剛才提到的JSON字符串格式錯誤會返回null,還有其他的原因。

遇到返回null的問題時,可以在 json_decode() 后面,打印 json_last_error() 查看錯誤。

實例:

var_dump(json_decode("{'key1':'value1','key2':'value2'}"));
echo json_last_error();

輸出:

NULL
4

json_last_error() 返回值解析:

  • 0 = JSON_ERROR_NONE //沒有錯誤
  • 1 = JSON_ERROR_DEPTH //超過最大堆棧深度
  • 2 = JSON_ERROR_STATE_MISMATCH //無效或異常的json
  • 3 = JSON_ERROR_CTRL_CHAR //控制字符錯誤,可能是編碼不對
  • 4 = JSON_ERROR_SYNTAX //JSON字符串語法錯誤
  • 5 = JSON_ERROR_UTF8 //異常的UTF-8字符,只能處理UTF8編碼的數(shù)據(jù)

四、大整數(shù)問題

options 參數(shù)設(shè)置為 JSON_BIGINT_AS_STRING,可以將超過PHP整型「最大值」的整數(shù)解析為字符串。

五、傳入非字符串類型

如果傳入的不是字符串類型,就不會解碼,或者說「無法解碼」:

  • 數(shù)值型會原樣返回
  • 運算符會運算后返回運算結(jié)果
  • 布爾型(true返回1,false返回NULL)
  • null會返回NULL

實例:

var_dump(json_decode(10));
var_dump(json_decode(10.11));
var_dump(json_decode(1*2));
var_dump(json_decode(true));
var_dump(json_decode(false));
var_dump(json_decode(null));

輸出:

int(10)
float(10.11)
int(2)
int(1)
NULL
NULL

六、強制類型轉(zhuǎn)換

解碼后進行「強制類型轉(zhuǎn)換」

實例:

var_dump((array)json_decode(10));
var_dump((int)json_decode(false));

輸出:

array(1) {
  [0]=>
  int(10)
}
int(0)

到此這篇關(guān)于詳解PHP json_decode()函數(shù)的使用方法的文章就介紹到這了,更多相關(guān)PHP json_decode()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

新竹市| 永福县| 荔浦县| 宜兰市| 邯郸县| 安泽县| 新绛县| 浦东新区| 蒲江县| 健康| 开鲁县| 衡水市| 齐河县| 来凤县| 双柏县| 龙胜| 南涧| 宜兰市| 神木县| 萨迦县| 息烽县| 始兴县| 滨海县| 榆树市| 教育| 临高县| 苏尼特左旗| 阳江市| 沂源县| 故城县| 黄平县| 德兴市| 乌拉特中旗| 柳河县| 三门峡市| 额尔古纳市| 夹江县| 浙江省| 兴城市| 永川市| 盐亭县|