php使用json_encode對變數json編碼_php執行個體

來源:互聯網
上載者:User

在 ajax 橫行的今天,json 順理成章地成為了前後端互動一個極其重要的工具。對於 PHP 來說,通常使用 json_encode 方法將一個 PHP 組數,轉換成前端可以解析的 json 字串,這也是 PHP 手冊上描述的內容,但事實是這樣的嗎?看看下面這段代碼:

複製代碼 代碼如下:

$a = array( 'Jack' , 'Sam' , 'Tom' );
echo json_encode( $a );

當 JavaScript 請求到上面的代碼,PHP 將解析數組 $a 為 json 字串並返回到前端,但事實上在前端拿到的返回結果卻是一個數組。
複製代碼 代碼如下:

[ "Jack" ,  "Sam" ,  "Tom" ]

這個結果對於前端來說也許並不是所期望的,對於 JavaScript 來說,數組和 json 的關係非常密切,甚至可以簡單地把 json 理解為關聯陣列,但這並不意味著二者可以劃等號,比如 json 沒有 length 屬性,也不能進行數字索引,json 是索引值對,而 JavaScript 的數組嚴格說來是沒有"鍵"的,這和 PHP 的差異比較大。那麼為什麼 json_encode 的返回結果是數組呢?

本文開頭的 PHP 代碼中的數組是嚴格意義上的數字索引數組,json_encode 方法在處理這樣的數組的時候會返回數組字串,它需要同時滿足兩個條件:1. 數字索引數組,2. 索引值從 0 開始。這意味著下面的代碼也會返回同樣的結果:

複製代碼 代碼如下:

$b = array(
'0' => 'Jack',
'1' => 'Sam',
'2' => 'Tom'
);
echo json_encode( $b );

這兩個條件的任意一個沒有獲得滿足,那麼 json_encode 方法才真正的返回 json 字串:
複製代碼 代碼如下:

$c = array(
'person-1' => 'Jack',
'person-2' => 'Sam',
'person-3' => 'Tom'
);
echo json_encode( $c );

這時前端得到的結果如下:
複製代碼 代碼如下:

{
'person-1' : 'Jack',
'person-2' : 'Sam',
'person-3' : 'Tom'
};

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.