PHP json_encode() 함수 소개

巴扎黑
풀어 주다: 2023-03-01 12:34:01
원래의
985명이 탐색했습니다.

PHP(php > 5.2)에 내장된 json_encode() 함수를 사용하면 PHP의 데이터를 다른 언어로 전송하고 사용할 수 있습니다.
이 함수의 기능은 숫자 값을 json 데이터 저장 형식으로 변환하는 것입니다.

<?php  
$arr = array  
       (  
          &#39;Name&#39;=>&#39;希亚&#39;,  
          &#39;Age&#39;=>20  
       );  
$jsonencode = json_encode($arr);  
echo $jsonencode;  
?>
로그인 후 복사

프로그램의 실행 결과는 다음과 같습니다.

{"Name":null,"Age":20}  
 
json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。
Php代码  
<?php  
$array = array  
    (  
        &#39;title&#39;=>iconv(&#39;gb2312&#39;,&#39;utf-8&#39;,&#39;这里是中文标题&#39;),  
        &#39;body&#39;=>&#39;abcd...&#39;  
    );  
echo json_encode($array);  
?>
로그인 후 복사

이 프로그램의 실행 결과는

Js 코드

{"title":"u8fd9u91ccu662fu4e2du6587u6807u9898","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 = 0;  
    if (++$recursive_counter > 1000) {  
        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;=>20  
       );  
  
  
echo JSON($array);  
?>
로그인 후 복사

이번에 성공하여 실행 결과는 다음과 같습니다.

Js code

{"Name":"Xiya" ,"나이":"20"}


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿