php使用json_encode對變量json編碼
在 ajax 橫行的今天,json 順理成章地成為了前后端交互一個極其重要的工具。對于 PHP 來說,通常使用 json_encode 方法將一個 PHP 組數(shù),轉換成前端可以解析的 json 字符串,這也是 PHP 手冊上描述的內(nèi)容,但事實是這樣的嗎?看看下面這段代碼:
$a = array( 'Jack' , 'Sam' , 'Tom' );
echo json_encode( $a );
當 JavaScript 請求到上面的代碼,PHP 將解析數(shù)組 $a 為 json 字符串并返回到前端,但事實上在前端拿到的返回結果卻是一個數(shù)組。
[ "Jack" , "Sam" , "Tom" ]
這個結果對于前端來說也許并不是所期望的,對于 JavaScript 來說,數(shù)組和 json 的關系非常密切,甚至可以簡單地把 json 理解為關聯(lián)數(shù)組,但這并不意味著二者可以劃等號,比如 json 沒有 length 屬性,也不能進行數(shù)字索引,json 是鍵值對,而 JavaScript 的數(shù)組嚴格說來是沒有"鍵"的,這和 PHP 的差異比較大。那么為什么 json_encode 的返回結果是數(shù)組呢?
本文開頭的 PHP 代碼中的數(shù)組是嚴格意義上的數(shù)字索引數(shù)組,json_encode 方法在處理這樣的數(shù)組的時候會返回數(shù)組字符串,它需要同時滿足兩個條件:1. 數(shù)字索引數(shù)組,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'
};
- 淺談php和js中json的編碼和解碼
- php中json_encode中文編碼問題分析
- PHP學習散記_編碼(json_encode 中文不顯示)
- PHP中遇到BOM、<feff>編碼導致json_decode函數(shù)無法解析問題
- php json中文編碼為null的解決辦法
- java解析php函數(shù)json_encode unicode 編碼問題
- php5.2 Json不能正確處理中文、GB編碼的解決方法
- php實現(xiàn)json編碼的方法
- PHP自定義遞歸函數(shù)實現(xiàn)數(shù)組轉JSON功能【支持GBK編碼】
- PHP 實現(xiàn) JSON 數(shù)據(jù)的編碼和解碼操作詳解
相關文章
thinkPHP5框架閉包函數(shù)與子查詢傳參用法示例
這篇文章主要介紹了thinkPHP5框架閉包函數(shù)與子查詢傳參用法,結合實例形式分析了thinkPHP5閉包查詢與參數(shù)傳遞相關操作技巧,需要的朋友可以參考下2018-08-08
使用laravel和ajax實現(xiàn)整個頁面無刷新的操作方法
今天小編就為大家分享一篇使用laravel和ajax實現(xiàn)整個頁面無刷新的操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
php mysql_real_escape_string addslashes及mysql綁定參數(shù)防SQL注入攻擊
這篇文章主要介紹了php mysql_real_escape_string addslashes及mysql綁定參數(shù)防SQL注入攻擊的相關資料,需要的朋友可以參考下2016-12-12

