欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂PHP培訓(xùn)詳解json在PHP中的應(yīng)用

2019-08-14 10:05:04 4318瀏覽

從5.2版本開(kāi)始,PHP原生提供json_encode()和json_decode()函數(shù),前者用于編碼,后者用于解碼。本篇文章扣丁學(xué)堂PHP培訓(xùn)小編給大家分享一下關(guān)于json在php中的應(yīng)用的相關(guān)知識(shí)點(diǎn),感興趣的小伙伴就隨小編來(lái)了解一下吧。


扣丁學(xué)堂PHP培訓(xùn)詳解json在PHP中的應(yīng)用


一、json_encode()


該函數(shù)主要用來(lái)將數(shù)組和對(duì)象,轉(zhuǎn)換為json格式。先看一個(gè)數(shù)組轉(zhuǎn)換的例子:


$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  
echo json_encode($arr);


結(jié)果為:{"a":1,"b":2,"c":3,"d":4,"e":5}


再看一個(gè)對(duì)象轉(zhuǎn)換的例子:


$obj->body = 'another post';
$obj->id = 21;
$obj->approved = true;
$obj->favorite_count = 1;
$obj->status = NULL;
echo json_encode($obj);


結(jié)果為:{"body":"another post","id":21,"approved":true,"favorite_count":1,"status":null}


由于json只接受utf-8編碼的字符,所以json_encode()的參數(shù)必須是utf-8編碼,否則會(huì)得到空字符或者null。當(dāng)中文使用GB2312編碼,或者外文使用ISO-8859-1編碼的時(shí)候,這一點(diǎn)要特別注意。



二、索引數(shù)組和關(guān)聯(lián)數(shù)組


PHP支持兩種數(shù)組,一種是只保存"值"(value)的索引數(shù)組(indexed array),另一種是保存"名值對(duì)"(name/value)的關(guān)聯(lián)數(shù)組(associative array)。


由于javascript不支持關(guān)聯(lián)數(shù)組,所以json_encode()只將索引數(shù)組(indexed array)轉(zhuǎn)為數(shù)組格式,而將關(guān)聯(lián)數(shù)組(associative array)轉(zhuǎn)為對(duì)象格式。


比如,現(xiàn)在有一個(gè)索引數(shù)組


$arr = array('one','two','three');
echo json_encode($arr);
結(jié)果為:["one","two","three"]


如果將它改為關(guān)聯(lián)數(shù)組:


$arr = Array('1'=>'one', '2'=>'two', '3'=>'three');  
echo json_encode($arr);


結(jié)果就變了:{"1":"one","2":"two","3":"three"}


注意,數(shù)據(jù)格式從"[]"(數(shù)組)變成了"{}"(對(duì)象)。


如果你需要將"索引數(shù)組"強(qiáng)制轉(zhuǎn)化成"對(duì)象",可以這樣寫(xiě):


json_encode( (object)$arr );


或者:


json_encode ( $arr, JSON_FORCE_OBJECT );



三、類(class)的轉(zhuǎn)換


下面是一個(gè)PHP的類:


class Foo {
  const ERROR_CODE = '404';
  public  $public_ex = 'this is public';
  private  $private_ex = 'this is private!';
  protected $protected_ex = 'this should be protected'; 
  public function getErrorCode() {
    return self::ERROR_CODE;
  }
}


現(xiàn)在,對(duì)這個(gè)類的實(shí)例進(jìn)行json轉(zhuǎn)換:


$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;


輸出結(jié)果是:{"public_ex":"this is public"}


可以看到,除了公開(kāi)變量(public),其他東西(常量、私有變量、方法等等)都遺失了。



四、json_decode()


該函數(shù)用于將json文本轉(zhuǎn)換為相應(yīng)的PHP數(shù)據(jù)結(jié)構(gòu)。下面是一個(gè)例子:


$json = '{"foo": 12345}';
$obj = json_decode($json);
print $obj->{'foo'}; // 12345 


通常情況下,json_decode()總是返回一個(gè)PHP對(duì)象,而不是數(shù)組。比如:


$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json)); 


結(jié)果就是生成一個(gè)PHP對(duì)象:


object(stdClass)[2]
 public 'a' => int 1
 public 'b' => int 2
 public 'c' => int 3
 public 'd' => int 4
 public 'e' => int 5


如果想要強(qiáng)制生成PHP關(guān)聯(lián)數(shù)組,json_decode()需要加一個(gè)參數(shù)true:


$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true));  


結(jié)果就生成了一個(gè)關(guān)聯(lián)數(shù)組:


array (size=5)
 'a' => int 1
 'b' => int 2
 'c' => int 3
 'd' => int 4
 'e' => int 5



五、json_decode()的常見(jiàn)錯(cuò)誤


下面三種json寫(xiě)法都是錯(cuò)的,你能看出錯(cuò)在哪里嗎?


$bad_json = "{ 'bar': 'baz' }";
$bad_json = '{ bar: "baz" }';
$bad_json = '{ "bar": "baz", }';


對(duì)這三個(gè)字符串執(zhí)行json_decode()都將返回null,并且報(bào)錯(cuò)。


第一個(gè)的錯(cuò)誤是,json的分隔符(delimiter)只允許使用雙引號(hào),不能使用單引號(hào)。


第二個(gè)的錯(cuò)誤是,json名值對(duì)的"名"(冒號(hào)左邊的部分),任何情況下都必須使用雙引號(hào)。


第三個(gè)的錯(cuò)誤是,最后一個(gè)值之后不能添加逗號(hào)(trailing comma)。


另外,json只能用來(lái)表示對(duì)象(object)和數(shù)組(array),如果對(duì)一個(gè)字符串或數(shù)值使用json_decode(),將會(huì)返回null。


var_dump(json_decode("Hello World")); //null

想要了解更多關(guān)于PHP開(kāi)發(fā)方面內(nèi)容的小伙伴,請(qǐng)關(guān)注扣丁學(xué)堂PHP培訓(xùn)官網(wǎng)、微信等平臺(tái),扣丁學(xué)堂IT職業(yè)在線學(xué)習(xí)教育有專業(yè)的PHP講師為您指導(dǎo),此外扣丁學(xué)堂老師精心推出的PHP視頻教程定能讓你快速掌握PHP從入門到精通開(kāi)發(fā)實(shí)戰(zhàn)技能。扣丁學(xué)堂PHP技術(shù)交流群:374332265。


扣丁學(xué)堂微信公眾號(hào)                          Python全棧開(kāi)發(fā)爬蟲(chóng)人工智能機(jī)器學(xué)習(xí)數(shù)據(jù)分析免費(fèi)公開(kāi)課直播間


      【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】         【掃碼進(jìn)入Python全棧開(kāi)發(fā)免費(fèi)公開(kāi)課】



查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>

標(biāo)簽: PHP培訓(xùn) PHP視頻教程 PHP在線視頻 PHP學(xué)習(xí)視頻 Laravel框架

熱門專區(qū)

暫無(wú)熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部