PHP自然地排序数组

时间:2017-04-26 06:14:33

标签: php

我想问一下如何自然地订购一些数组呢? 在较旧的php版本中,natsort运行良好,但现在情况并非如此。它会跳过空间并扰乱自然秩序。 我找到了

  

sort($ list_items,SORT_STRING | SORT_FLAG_CASE);

 usort($list_items, function($first, $second)  {
    if ($first == $second) {
        return 0;
    } else {
        return (strtolower($first) < strtolower($second)) ? -1 : 1;
    }

效果更好,但它们都有一个问题:它将单个单词放在列表的末尾。 对于前者它会是:

  • 纽约

不是

  • 纽约

任何人都有解决方案吗? 非常感谢你!

  • 罗马尼亚年鉴
  • 罗马尼亚Ziar独立
  • 罗马尼亚

3 个答案:

答案 0 :(得分:0)

你期待这个吗?这里我们使用strcmp函数进行二进制安全字符串比较。

Try this code snippet here     

$array = array(
    "Romania Yearbook",
    "Romania Ziar independent",
    "Romaniai Elelmezezi Ipari Munkasok Egyesult",
    "Romaniai"
);
usort($array,function($str1, $str2){
    strcmp($str1, $str2);
});
print_r($array);

答案 1 :(得分:0)

我认为array_multisort()是你需要的,它也有sorting type

https://www.w3schools.com/php/func_array_multisort.asp

答案 2 :(得分:0)

请尝试使用asort(数组);它用于按名称排序值