Utf8排序数组

时间:2015-08-20 08:25:04

标签: php sorting php-5.3

我在排序数组时遇到了一些问题。

列表

0 => string 'Australien' (length=10)
1 => string 'Belgien' (length=7)
2 => string 'Botswana' (length=8)
3 => string 'Brasilien' (length=9)
4 => string 'Bulgarien' (length=9)
5 => string 'Burma' (length=5)
6 => string 'China' (length=5)
7 => string 'Costa Rica' (length=10)
73 => string 'Ägypten' (length=8)

但Ägypten应该追随澳大利亚人。 我已经尝试过Collat​​or类,但我们的客户不会安装扩展程序。

1 个答案:

答案 0 :(得分:2)

您可以将setlocale与第一个参数LC_COLLATE一起使用,将第二个区域设置与en_US.utf8一起使用,然后使用usortstrcoll进行排序,尝试

setlocale(LC_COLLATE, 'en_US.utf8');
$array = array('Australien','Belgien','Botswana','Brasilien','Bulgarien','Burma','China','Costa Rica','Ägypten');
usort($array, 'strcoll'); 
print_r($array);

Demo