ホームページ  >  記事  >  バックエンド開発  >  PHP配列をJSONに変換して中国語コードを表示します。説明してください

PHP配列をJSONに変換して中国語コードを表示します。説明してください

WBOY
WBOYオリジナル
2016-06-23 14:12:401112ブラウズ

この投稿は、wang23412 によって最終編集されました: 2013-06-09 17:05:27

PHP JSON 中国語エンコーディング

php を使用して配列を json 形式に変換し、jquery に渡すと、中国語は次のようになることがわかりました。奇妙なエンコーディング。そこで、インターネットで解決策を探したところ、多くの人が次の 2 つの関数を使用して解決していることがわかりました。
function arrayRecursive(&$array, $function, $apply_to_keys_also = false){    static $recursive_counter = 0;    if (++$recursive_counter > 1000) {        die('possible deep recursion attack');    }    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--;}

function JSON($array) { arrayRecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json);}

テストしてみたところ、実際に問題を解決できたので、コードを注意深く調べたところ、問題を解決できないことがわかりました。次のコードが何なのかわかりません。どういう意味ですか:
$array[$key] = $function($value);

この文の前後に $array[$key] を出力して値を確認したところ、この文が中国語をコードの文字列に変えていることがわかりました。
$function($value) の意味を説明してください。

ディスカッションへの返信 (解決策)

へーん、'$function' を渡されたパラメーター $function の値に置き換えてもう一度見てください

定義
function arrayRecursive(&$array, $function, $apply_to_keys_only = false ) で
$array[$key] = $function($value);


arrayRecursive($array, ' urlencode', true) を呼び出しますので、 $array[$key] = $function($value); ;
それは $array[$key] = urlencode($value); です。 。よし。 。渡されるパラメータです。 。私はローエンドです...

$array[$key] = $function($value) で

function arrayRecursive(&$array, $function, $apply_to_keys_only = false) を定義します

Call

arrayRecursive( $array, ' urlencode', true);

つまり $array[$key] = $function($value);
は $array[$key] = urlencode($value); ということのようですこれら 2 つの関数のうち、まず配列内の各値を urlen コード化し、次に json_encode を json 形式に変換し、最後に文字列を json 形式で URL デコードします。ありがとう。コードを見ても頭が回転しません

この関数は gbk でエンコードされたデータ用です
utf-8 データの場合、これを行う必要はありません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。