Max*_*Max 2 php sorting localization string-comparison
我strcmp正在组合使用usort,以便对一系列国家/地区名称进行排序.目前,排序顺序为:
Belgien
Frankreich
Italien
Luxemburg
Niederlande
Spanien
United Kingdom
Österreich
Run Code Online (Sandbox Code Playgroud)
这是正确的,除了的位置Österreich.它应该在Niederlande和之间Spanien.
我也试过strnatcmp和strcoll(同setlocale),但排序顺序是不是我想要的方式.结果不是来自mysql数据库,因此不能通过mysql查询进行排序.
老问题,同时我在另一家公司的另一个项目上工作,但最近遇到了同样的问题.最终工作的是安装PHP 的intl扩展.
sudo apt-get install php5-intl
Run Code Online (Sandbox Code Playgroud)
然后使用:
$arr = array(
"Belgien",
"Frankreich",
"Italien",
"Luxemburg",
"Niederlande",
"United Kingdom",
"Österreich",
"Spanien",
"Ásdf",
);
$coll = collator_create('de_DE');
$coll->sort($arr);
print_r($arr);
Run Code Online (Sandbox Code Playgroud)
按预期顺序返回结果:
Array
(
[0] => Ásdf
[1] => Belgien
[2] => Frankreich
[3] => Italien
[4] => Luxemburg
[5] => Niederlande
[6] => Österreich
[7] => Spanien
[8] => United Kingdom
)
Run Code Online (Sandbox Code Playgroud)