我有以下数组:
array(1) {
[0]=>
array(2) {
[0]=>
array(2) {
[0]=>
string(3) "abc"
[1]=>
string(3) "įāē"
}
[1]=>
array(2) {
[0]=>
string(3) "čaē"
[1]=>
string(3) "qwe"
}
}
}
我正在使用波纹管代码在页面上回显结果:
echo json_encode($array);
我的页面上显示以下结果:
[[["abc",null],[null,"qwe"]]]
每个具有特殊字符的字符串都将转换为null。
所以我在数组中的每个元素上尝试了utf8_encode
:
foreach($array as &$subarray1){
foreach($subarray1 as &$subarray2){
foreach($subarray2 as &$subarray3){
$subarray3 = utf8_encode($subarray3);
}
}
}
但我得到以下结果:
[[["abc","\u00e1\u00e2\u00e7"],["\u00e8a\u00e7","qwe"]]]
对此进行编码的正确方法是什么?
答案 0 :(得分:3)
json_encode
支持第二个参数,因此您可以使用常量JSON_UNESCAPED_UNICODE
,如下所示:
$arr = [
0 => [0 => "abc", 1 => "įāē"],
1 => [0 => "čaē", 1 => "qwe"]
];
echo json_encode($arr, JSON_UNESCAPED_UNICODE);
您可以在此处找到有效的演示: https://ideone.com/J5bvT5