首頁 >後端開發 >php教程 >PHP json_encode() 函數詳解

PHP json_encode() 函數詳解

墨辰丷
墨辰丷原創
2018-06-06 11:58:064281瀏覽

這篇文章主要介紹PHP json_encode() 函數詳解,有興趣的朋友參考下,希望對大家有幫助。

在 php 中使用 json_encode() 內建函數(php > 5.2)可以使用得 php 中資料可以與其它語言很好的傳遞並且使用它。

這個函數的功能是將數值轉換成json資料儲存格式。

<?php
$arr = array
  (
   &#39;Name&#39;=>&#39;希亚&#39;,
   &#39;Age&#39;=>
  );
$jsonencode = json_encode($arr);
echo $jsonencode;
?>

程式運行結果如下:

{"Name":null,"Age":}

json_encode 函數中中文被編碼成null 了,Google 了一下,很簡單,為了與前端緊密結合,Json 只支援utf- 編碼,我認為是前端的Javascript 也是utf- 的原因。

<?php
$array = array
 (
  &#39;title&#39;=>iconv(&#39;gb&#39;,&#39;utf-&#39;,&#39;这里是中文标题&#39;),
  &#39;body&#39;=>&#39;abcd...&#39;
 );
echo json_encode($array);
?>

這個程式的運作結果為:

{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd.. ."}

陣列中所有中文在json_encode之後都不見了或出現\u2353等。

解決方法是用urlencode()函數處理以下,在json_encode之前,把所有數組內所有內容都用urlencode()處理一下,然用json_encode()轉換成json字串,最後再用urldecode ()將編碼過的中文轉回來。

<?php
/**************************************************************
 *
 * 使用特定function对数组中所有元素做处理
 * @param string &$array  要处理的字符串
 * @param string $function 要执行的函数
 * @return boolean $apply_to_keys_also  是否也应用到key上
 * @access public
 *
 *************************************************************/
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
 static $recursive_counter = ;
 if (++$recursive_counter > ) {
  die(&#39;possible deep recursion attack&#39;);
 }
 foreach ($array as $key => $value) {
  if (is_array($value)) {
   arrayRecursive($array[$key], $function, $apply_to_keys_also);
  } else {
   $array[$key] = $function($value);
  }
  if ($apply_to_keys_also && is_string($key)) {
   $new_key = $function($key);
   if ($new_key != $key) {
    $array[$new_key] = $array[$key];
    unset($array[$key]);
   }
  }
 }
 $recursive_counter--;
}
/**************************************************************
 *
 * 将数组转换为JSON字符串(兼容中文)
 * @param array $array  要转换的数组
 * @return string  转换得到的json字符串
 * @access public
 *
 *************************************************************/
function JSON($array) {
 arrayRecursive($array, &#39;urlencode&#39;, true);
 $json = json_encode($array);
 return urldecode($json);
}
$array = array
  (
   &#39;Name&#39;=>&#39;希亚&#39;,
   &#39;Age&#39;=>
  );
echo JSON($array);
?>

這次成功了,運行結果如下:

{"Name":"希亞","Age":"20"}

總結:以上就是本篇的全部內容,希望對大家的學習有所幫助。

相關推薦:

php線上壓縮zip檔案的方法

#php如何驗證信箱位址

PHP閉包函數的意義

#

以上是PHP json_encode() 函數詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn