この投稿は、wang23412 によって最終編集されました (2013-06-09 17:05:27)
PHPを使って配列をjson形式に変換してjqueryに渡すと、中国語がおかしなエンコードになってしまうことが分かりました。そこでインターネットで解決策を探したところ、多くの人が次の 2 つの関数を使用して解決していることがわかりました。
function arrayRecursive(&$array, $function, $apply_to_keys_also = false)<br />
{<br />
static $recursive_counter = 0;<br />
if (++$recursive_counter > 1000) {<br />
die('possible deep recursion attack');<br />
}<br />
foreach ($array as $key => $value) {<br />
if (is_array($value)) {<br />
arrayRecursive($array[$key], $function, $apply_to_keys_also);<br />
} else {<br />
$array[$key] = $function($value);<br />
}<br />
if ($apply_to_keys_also && is_string($key)) {<br />
$new_key = $function($key);<br />
if ($new_key != $key) {<br />
$array[$new_key] = $array[$key];<br />
unset($array[$key]);<br />
}<br />
}<br />
}<br />
$recursive_counter--;<br />
}
function JSON($array) {<br />
arrayRecursive($array, 'urlencode', true);<br />
$json = json_encode($array);<br />
return urldecode($json);<br />
}
テストしてみると実際に問題は解決したので、コードを注意深く調べたところ、次のコードの意味がわからないことがわかりました:
$array[$key] = $function($value);
この文の前後に $array[$key] を出力して値を確認したところ、この文が中国語をコード列に変えていることが分かりました。
$function($value) が何を意味するのか説明していただけますか?