生活随笔
收集整理的這篇文章主要介紹了
PHP json_encode() 函数介绍
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在 php 中使用 json_encode() 內(nèi)置函數(shù)(php > 5.2)可以使用得 php 中數(shù)據(jù)可以與其它語言很好的傳遞并且使用它。
這個函數(shù)的功能是將數(shù)值轉(zhuǎn)換成json數(shù)據(jù)存儲格式。
| 04 | ??????????'Name'=>'希亞', |
| 08 | $jsonencode?= json_encode($arr); |
程序運(yùn)行結(jié)果如下:
json_encode 函數(shù)中中文被編碼成 null 了,Google 了一下,很簡單,為了與前端緊密結(jié)合,Json 只支持 utf-8 編碼,我認(rèn)為是前端的 Javascript 也是 utf-8 的原因。
| 4 | ????????'title'=>iconv('gb2312','utf-8','這里是中文標(biāo)題'), |
| 5 | ????????'body'=>'abcd...' |
| 8 | echo?json_encode($array); |
這個程序的運(yùn)行結(jié)果為:
| 1 | {"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."} |
數(shù)組中所有中文在json_encode之后都不見了或者出現(xiàn)\u2353等。
解決方法是用urlencode()函數(shù)處理以下,在json_encode之前,把所有數(shù)組內(nèi)所有內(nèi)容都用urlencode()處理一下,然用json_encode()轉(zhuǎn)換成json字符串,最后再用urldecode()將編碼過的中文轉(zhuǎn)回來。
view source print?
| 02 | /************************************************************** |
| 04 | ?*? 使用特定function對數(shù)組中所有元素做處理 |
| 05 | ?*? @param? string? &$array???? 要處理的字符串 |
| 06 | ?*? @param? string? $function?? 要執(zhí)行的函數(shù) |
| 07 | ?*? @return boolean $apply_to_keys_also???? 是否也應(yīng)用到key上 |
| 10 | ?*************************************************************/ |
| 11 | function?arrayRecursive(&$array,?$function,?$apply_to_keys_also?= false) |
| 13 | ????static?$recursive_counter?= 0; |
| 14 | ????if?(++$recursive_counter?> 1000) { |
| 15 | ????????die('possible deep recursion attack'); |
| 17 | ????foreach?($array?as?$key?=>?$value) { |
| 18 | ????????if?(is_array($value)) { |
| 19 | ????????????arrayRecursive($array[$key],?$function,?$apply_to_keys_also); |
| 21 | ????????????$array[$key] =?$function($value); |
| 24 | ????????if?($apply_to_keys_also?&&?is_string($key)) { |
| 25 | ????????????$new_key?=?$function($key); |
| 26 | ????????????if?($new_key?!=?$key) { |
| 27 | ????????????????$array[$new_key] =?$array[$key]; |
| 28 | ????????????????unset($array[$key]); |
| 32 | ????$recursive_counter--; |
| 35 | /************************************************************** |
| 37 | ?*? 將數(shù)組轉(zhuǎn)換為JSON字符串(兼容中文) |
| 38 | ?*? @param? array?? $array????? 要轉(zhuǎn)換的數(shù)組 |
| 39 | ?*? @return string????? 轉(zhuǎn)換得到的json字符串 |
| 42 | ?*************************************************************/ |
| 43 | function?JSON($array) { |
| 44 | ????arrayRecursive($array,?'urlencode', true); |
| 45 | ????$json?= json_encode($array); |
| 46 | ????return?urldecode($json); |
| 51 | ??????????'Name'=>'希亞', |
這次成功了,運(yùn)行結(jié)果如下:
| 1 | {"Name":"希亞","Age":"20"} |
轉(zhuǎn)載于:https://www.cnblogs.com/moqiang02/p/4061406.html
總結(jié)
以上是生活随笔為你收集整理的PHP json_encode() 函数介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。