php使用json encode對變數json編碼

2022-10-05 03:09:11 字數 1200 閱讀 2446

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

複製** **如下:

$a = array( 'jack' , 'sam' , 'tom' );

echo json_encode( $a );

當 jhkshpm**ascript 請求到上面的**,php 將解析陣列 $a 為 json 字串並返回到前端,但事實上在前端拿到的返回結果卻是乙個陣列。

複製** **如下:

[ "jack" ,  "sam" ,  "tom" ]

這個結果對於前端來說也許並不是所期望的,對於 j**ascript 來說,陣列和 json 的關係非常密切,甚至程式設計客棧可以簡單地把 json 理解為關聯陣列,但這並不意味著二者可以劃等號,比如 json 沒有 length 屬性,也不能進行數字索引,json 是鍵值對,而 j**ascript 的陣列嚴格說來是沒有"鍵程式設計客棧"的,這和 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 );

這時前端得到的結果如下:

複製** **如下:

;

本文標題: php使用json_encode對變數json編碼

本文位址: /wangluo/php/107201.html

PHP中json encode的使用心得

假設有這麼乙個url url 你好 data url url echo json encode data 得到這樣的輸出 首先發現中文經過encode之後變成了16進製制,這不是亂碼,只是單純現實方法變了,因為只需要直接通過反序列化就能得到原結果,如下 jsonstr data json decod...

PHP的json encode處理中文

用php的json encode來處理中文的時候,中文都會被編碼,變成不可讀的,類似 u 的格式,如果想漢字不進行轉碼,這裡提供三種方法 1.公升級php,在php5.4,這個問題終於得以解決,json新增了乙個選項 json unescaped unicode,故名思議,就是說,json不要編碼u...

php 解決json encode中文問題

眾所周知使用json encode可以方便快捷地將物件進行json編碼,但是如果物件的屬性中存在著中文,問題也就隨之而來了。json encode會將中文轉換為unicode編碼 例如 胥 經過json encode處理後變為 u80e5 最終的json中中文部分被替換為unicode編碼。我們要解...