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

在PHP語(yǔ)言中使用JSON和將json還原成數(shù)組的方法

 更新時(shí)間:2016年07月19日 09:52:13   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇在PHP語(yǔ)言中使用JSON和將json還原成數(shù)組的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè) 參考。一起跟隨小編過(guò)來(lái)看看吧

在之前我寫過(guò)php返回json數(shù)據(jù)簡(jiǎn)單實(shí)例,剛剛上網(wǎng),突然發(fā)現(xiàn)一篇文章,也是介紹json的,還挺詳細(xì),值得參考。內(nèi)容如下

從5.2版本開(kāi)始,PHP原生提供json_encode()和json_decode()函數(shù),前者用于編碼,后者用于解碼。

一、json_encode()

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

輸出

{"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); 

輸出

{ 
    "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); 

 輸出

["one","two","three"] 

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

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

輸出變?yōu)?/p>

{"1":"one","2":"two","3":"three"} 

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

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

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)#1 (5) { 
   
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["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(5) { 
   
     ["a"] => int(1) 
     ["b"] => int(2) 
     ["c"] => int(3) 
     ["d"] => int(4) 
     ["e"] => int(5) 
   
  } 

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

下面三種json寫法都是錯(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 

以上這篇在PHP語(yǔ)言中使用JSON和將json還原成數(shù)組的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Laravel多域名下字段驗(yàn)證的方法

    Laravel多域名下字段驗(yàn)證的方法

    這篇文章主要給大家介紹了關(guān)于Laravel多域名下字段驗(yàn)證的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Laravel具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 如何使用php生成zip壓縮包

    如何使用php生成zip壓縮包

    這篇文章主要介紹了如何使用php生成zip壓縮包,對(duì)壓縮感興趣的同學(xué),可以實(shí)驗(yàn)一下
    2021-04-04
  • php設(shè)計(jì)模式之模板模式實(shí)例分析【星際爭(zhēng)霸游戲案例】

    php設(shè)計(jì)模式之模板模式實(shí)例分析【星際爭(zhēng)霸游戲案例】

    這篇文章主要介紹了php設(shè)計(jì)模式之模板模式,基于星際爭(zhēng)霸游戲案例形式分析了php模板模式相關(guān)原理與使用技巧,需要的朋友可以參考下
    2020-03-03
  • 在Nginx上部署ThinkPHP項(xiàng)目教程

    在Nginx上部署ThinkPHP項(xiàng)目教程

    這篇文章主要介紹了在Nginx上部署ThinkPHP項(xiàng)目的方法,十分詳細(xì),需要的朋友可以參考下
    2015-02-02
  • cookie的優(yōu)化與購(gòu)物車實(shí)例

    cookie的優(yōu)化與購(gòu)物車實(shí)例

    下面小編就為大家?guī)?lái)一篇cookie的優(yōu)化與購(gòu)物車實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • php-beanstalkd消息隊(duì)列類實(shí)例分享

    php-beanstalkd消息隊(duì)列類實(shí)例分享

    這篇文章主要為大家分享了php-beanstalkd消息隊(duì)列類實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • php 運(yùn)算符與表達(dá)式詳細(xì)介紹

    php 運(yùn)算符與表達(dá)式詳細(xì)介紹

    運(yùn)算符和表達(dá)式是php學(xué)習(xí)中最基礎(chǔ)的知識(shí),本文章通過(guò)實(shí)例向大家講解一下運(yùn)算符和表達(dá)式在php中的一些應(yīng)用和技巧,以及需要注意的地方,需要的朋友可以參考一下。
    2016-11-11
  • 深入解析php之a(chǎn)pc

    深入解析php之a(chǎn)pc

    本篇文章是對(duì)php中apc的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Laravel最佳分割路由文件(routes.php)的方式

    Laravel最佳分割路由文件(routes.php)的方式

    本文是一篇關(guān)于Laravel分割路由文件(routes.php)的最佳方式教程文章,內(nèi)容介紹的很詳細(xì),學(xué)習(xí)Laravel的小伙伴可以參考學(xué)習(xí)。
    2016-08-08
  • php分頁(yè)查詢的簡(jiǎn)單實(shí)現(xiàn)代碼

    php分頁(yè)查詢的簡(jiǎn)單實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了php分頁(yè)查詢的簡(jiǎn)單實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評(píng)論

五指山市| 平谷区| 朝阳区| 和顺县| 新沂市| 枝江市| 科尔| 襄汾县| 灌南县| 新巴尔虎右旗| 桐城市| 阿城市| 玛纳斯县| 嫩江县| 金湖县| 甘德县| 乐业县| 绍兴市| 嵊泗县| 广河县| 新兴县| 固安县| 积石山| 郑州市| 土默特右旗| 白沙| 霍邱县| 通城县| 辽阳县| 揭阳市| 富蕴县| 石楼县| 新巴尔虎左旗| 朝阳市| 东阳市| 泉州市| 遂宁市| 曲水县| 遵义市| 蓝山县| 瑞昌市|