我有一个数组(18个键):
$en = array(
'Ą' => 'A',
'Č' => 'C',
'Ę' => 'E',
'Ė' => 'E',
'Į' => 'I',
'Š' => 'S',
'Ų' => 'U',
'Ū' => 'U',
'Ž' => 'Z',
'ą' => 'a',
'č' => 'c',
'ę' => 'e',
'ė' => 'e',
'į' => 'i',
'š' => 's',
'ų' => 'u',
'ū' => 'u',
'ž' => 'z',
);
这些键是立陶宛符号(utf8编码)。
当我$lt = array_flip($en);
时,它会返回以下内容:
Array
(
[A] => Ą
[C] => Č
[E] => Ė
[I] => Į
[S] => Š
[U] => Ū
[Z] => Ž
[a] => ą
[c] => č
[e] => ė
[i] => į
[s] => š
[u] => ū
[z] => ž
)
你可以看到缺少4个键('Ę','Ų','ę','ų')。怎么回事?
答案 0 :(得分:10)
这里与UTF-8没什么关系;只是简单的数组/哈希表机制。
这些键:
'Ę' => 'E',
'Ė' => 'E',
'Ų' => 'U',
'Ū' => 'U',
'ę' => 'e',
'ė' => 'e',
'ų' => 'u',
'ū' => 'u',
对应于成对的相同值。翻转数组时,每对中的下一个会覆盖前一个数组,因为单个数组中不能有两个相同的键。因此结果:
[E] => Ė
[U] => Ū
[e] => ė
[u] => ū
如果您需要将英文字母映射到此类立陶宛字母,您可能需要编写一个自定义函数,将多个立陶宛字母放在一个数组中,对应相同的英文字母键(或更确切地说,值)。