关于UTF8阵列的foreach

时间:2013-10-10 15:11:06

标签: php arrays utf-8 foreach

我看到了奇怪的事情!

看,这是我的阵列:

$array = array('حساب داری', 'صنایع', 'مهندسی سخت افزار', 'مهندسی عمران');

print_r($array):

Array
(
    [0] => حساب داری
    [1] => صنایع
    [2] => مهندسی سخت افزار
    [3] => مهندسی عمران
)

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

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

输出结果为:

('1', 'حساب داری'),  ('1', 'صنایع'),  ('1', 'مهندسی سخت افزار'),  ('1', 'مهندسی عمران'), 

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

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

提前致谢

P.S:使用一些utf-8解码功能无效。

1 个答案:

答案 0 :(得分:5)

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

<html dir="rtl">

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

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

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