关于UTF8阵列的foreach

beh*_*z4d 2 php arrays foreach utf-8

我看到一些奇怪的东西!

看,这是我的数组:

$array = array('???? ????', '?????', '?????? ??? ?????', '?????? ?????');

print_r($array):

Array
(
    [0] => ???? ????
    [1] => ?????
    [2] => ?????? ??? ?????
    [3] => ?????? ?????
)
Run Code Online (Sandbox Code Playgroud)

上面数组的值包含utf-8字符,现在是foreach:

    $test = '';
    foreach($array as $key => $value){
        $test.= " ('1', '$value'), ";   
    }
Run Code Online (Sandbox Code Playgroud)

输出是:

('1', '???? ????'),  ('1', '?????'),  ('1', '?????? ??? ?????'),  ('1', '?????? ?????'), 
Run Code Online (Sandbox Code Playgroud)

如你所见,这一切都错了......

为什么会发生这种情况以及如何解决这个问题?

提前致谢

PS:使用一些utf-8解码功能不起作用.

Jon*_*oni 5

字符串的开头被解释为从左到右,其余的从右到左.您可以通过将整个文档设置为从右到左来解决故障:

<html dir="rtl">
Run Code Online (Sandbox Code Playgroud)

如果您希望文档主要从左到右显示,则必须在每个阿拉伯字符串后添加一些控制字符以强制更改为LTR,因为数字和标点符号不够"强".如果您的输出包含LTR字母(如A),它也将按预期呈现; 测试这些:

foreach($array as $key => $value){
    $test.= " ('1', '$value&lrm;'), ";   
}

foreach($array as $key => $value){
    $test.= " ('A', '$value'), ";   
}
Run Code Online (Sandbox Code Playgroud)