区域设置感知字符串比较
我将 strcmp
与 usort
结合使用,以便对国家/地区名称数组进行排序。目前,排序顺序是:
Belgien
Frankreich
Italien
Luxemburg
Niederlande
Spanien
United Kingdom
Österreich
除了 Österreich
的位置之外,这是正确的。它应该位于 Niederlande
和 Spanien
之间。
我还尝试了 strnatcmp
和 strcoll
(使用 setlocale
),但排序顺序不是我想要的方式。结果不是来自 mysql 数据库,因此不能选择通过 mysql 查询进行排序。
I´m using strcmp
in combination with usort
in order to sort an array of country names. Currently, the sort order is:
Belgien
Frankreich
Italien
Luxemburg
Niederlande
Spanien
United Kingdom
Österreich
Which is correct, apart from the position of Österreich
. It should be between Niederlande
and Spanien
.
I also tried strnatcmp
and strcoll
(with setlocale
), but the sort order was not the way I wanted it. The results are not from a mysql db, so sorting via a mysql query is not an option.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
老问题,同时我正在另一家公司从事另一个项目,但最近遇到了同样的问题。最终起作用的是安装 PHP 的 intl 扩展。
然后使用:
按预期顺序返回结果:
Old question, meanwhile I am working at another company on another project, but faced recently the same problem. What finally worked was installing the intl extension for PHP.
And then using:
Returned the results in the expected order:
这有效(假设脚本采用 UTF-8):
给我:
但是,这很痛苦;它需要安装区域设置。
locale -a
为您提供已安装的区域设置,例如在我的机器中它为我提供:This works (assumes script is in UTF-8):
gives me:
However, this is painful; it requires the locale to be installed.
locale -a
gives you the installed locales, e.g. in my machine it gives me: