php中json_decode和var_export的參數用法

來源:互聯網
上載者:User

無論是json_decode還是var_export都是有第二個參數的,以前從來沒有注意過,T_T.而且,這個var_export函數也是第一次知道,基礎啊,還是不紮實。

json_decode
(PHP 5 >= 5.2.0, PECL json:1.2.0-1.2.1)
json_decode — 對 JSON 格式的字串進行編碼
說明
mixed json_decode ( string $json [, bool $assoc ] )
接受一個 JSON 格式的字串並且把它轉換為 PHP 變數

以前用json都是用做ajax處理的資料格式,今天合作方給的介面返回的資料格式就是json的,當時還在想,這玩意返回的是object,可以直接用做javascript裡面的,可是在php裡面咋把這個對象轉為數組呢?抓耳撓腮半天,還是決定去看手冊。不看不知道,一看嚇一跳,原來這玩意還有第二個參數,如果傳為true的話,解碼後的資料就變成數組了,Happy啊。

當array是一個從0開始的連續數組時,json_encode出來的結果是一個由[]括起來的字串

而當array是不從0開始或者不連續的數組時,json_encode出來的結果是一個由{}括起來的key-value模式的字串

 代碼如下 複製代碼

$test = array();
$test[] = 1;
$test[] = 1;
$test[] = 1;
DEBUG(json_encode($test));結果:
[1,1,1]


$test = array();
$test[] = 1;
$test[] = 1;
$test[] = 1;
unset($test[0]);
DEBUG(json_encode($test));

結果:

{"1":1,"2":1}2.當字串為[1,1,1] 這種模式時,json_decode預設解析出來的結果是一個數組,

當字串為{"1":1,"2":1} 這種模式時,json_decode預設解析出來的結果是一個對象,此時可以設定它的第二個參數為true強制讓它返回數組

 

3.由於php無法區分一維數組和二維數組,才會出現以上情況,因為使用json編碼時推薦將第二個參數設定為true


--------------------------------------------------------------------------------
想把重新弄好的資料存在檔案裡,資料格式是數組,之前的方法都是serialize,取出來的時候再還原序列化,今天犯懶,就想能不能直接把數組存在檔案裡呢?
可是數組的格式實在不好拼,尤其是關聯陣列,那下標,我要是全知道的話不得累死我?還是問Google大哥吧。
var_export
(PHP 4 >= 4.2.0, PHP 5)
var_export — 輸出或返回一個變數的字串表示
描述
mixed var_export ( mixed $expression [, bool $return ] )

此函數返回關於傳遞給該函數的變數的結構資訊,它和 var_dump() 類似,不同的是其返回的表示是合法的 PHP 代碼。
您可以通過將函數的第二個參數設定為 TRUE,從而返回變數的表示。
看到沒?這個函數,帥呆了,之前一直用var_dump,不知道姓var的還有這麼個玩意,不錯,不錯的說。

 代碼如下 複製代碼


$handle = fopen($file_name, 'w+');
fwrite($handle,'<?php'."n".'$datas= '.var_export($result).";n?>");
fclose($handle);

結果一用的時候,還是有問題,該函數把數組的內容給我輸出到頁面上了,而檔案內是啥都米有,這不鬧呢嗎?如果只是這樣的話,我為啥用它啊?在頁面上顯示,我用<pre><pre>多爽啊。正鬱悶呢,仔細一看原來這個函數也有第二個參數,作用和json_decode的一樣,看來我這粗心的毛病還是很嚴重滴。

 

 代碼如下 複製代碼
$handle = fopen($file_name, 'w+');
fwrite($handle,'<?php'."n".'$datas= '.var_export($result,true).";n?>");
fclose($handle);


執行個體

 代碼如下 複製代碼

$res = yblog_mspconfiginit("ratings");
var_dump($res);
var_export($res);

/*結果:resource(1) of type (yahoo_yblog)NULL*/

 

再比如:

 代碼如下 複製代碼


$res = fopen('status.html', 'r');
var_dump($res);
var_export($res);

/*結果:resource(2) of type (stream)NULL*/

var_export必須返回合法的php代碼, 也就是說,var_export返回的代碼,可以直接當作php代碼賦值個一個變數。 而這個變數就會取得和被var_export一樣的類型的值

但是, 當變數類型為resource的時候, 是無法簡單copy複製的,所以, 當var_export的變數是resource類型時, var_export會返回NULL

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.