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

WBOY
リリース: 2016-06-23 14:12:40
オリジナル
1078 人が閲覧しました

この投稿は、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 データの場合、これを行う必要はありません

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!