【问题标题】:Utf8 Sort ArrayUtf8 排序数组
【发布时间】:2015-08-20 08:25:03
【问题描述】:

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

列表

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 类,但我们的客户端不会安装扩展。

【问题讨论】:

  • 你还有其他名字,比如“Ägypten”吗?
  • 我相信这个链接会对你有所帮助:stackoverflow.com/questions/7929796/…
  • 您没有阅读我的全部问题吗?我已经尝试过Collat​​or。是的,它不止一个。
  • 嗨,Noaaah...如果您在我发给您的链接下方阅读,它不仅仅是 Collat​​or 的答案。就像纳伦德拉写的那样。

标签: php sorting php-5.3


【解决方案1】:

您可以将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

【讨论】:

  • 在这种情况下,语言环境可能应该是de_DE.UTF-8,但是是的,这应该工作。
  • 感谢转发。我会更新它,但它会生成与 OP Check This @deceze 所显示的相同
  • 它不会工作...` setlocale(LC_COLLATE, 'de_DE.UTF-8'); $this->utf8_encode_deep($list); usort($list['continents'], 'strcoll'); die(var_dump($list['countries']));`
  • 什么不工作@noaaah 你检查了demo link its working fine
  • @NarendraSisodia 好吧,对我来说,这行不通,我把我的代码放在评论中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 2018-06-10
  • 2018-07-11
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
相关资源
最近更新 更多