PHP在小写字符之前排序大写字符

时间:2017-06-28 02:24:30

标签: php sorting

我正在使用PHP并遇到不同排序功能的问题,例如sort和usort。这是一个例子。

A. Pek
AL-mara
Aalto
Ahola

这将打印:

A. Pek
Aalto
Ahola
AL-mara

我希望它是这样的:

$taulu[] = "Ahola";
$taulu[] = "AL-mara";
$taulu[] = "Aalto";
$taulu[] = "A. Pek";
$taulu[] = "AaltoNen";
$taulu[] = "Aalto nen";

sort($taulu, SORT_NATURAL | SORT_FLAG_CASE);

print_r($taulu);

怎么可能呢?

更新

Actor

https://3v4l.org/sZdfa上“输出hhvm-3.10.1 - 3.19.0,7.0.0 - 7.2.0alpha2”部分的输出不正确,但在“输出5.4.0 - 5.6”部分.30“输出100%正确。在https://eval.in上使用PHP 5.6.23时,代码运行正常。无论如何,在我的服务器上使用PHP 5.6.30这不起作用。

那么,为什么这在所有情况下都不起作用?

3 个答案:

答案 0 :(得分:2)

使用// The last parameter of the Domain is the the array. // I want to make a request for every chunked array. $domains = file_get_contents("http://www.somedomain.com/api.php?username:Pw:getinfo=$result"); var_dump($domains); ,然后按字符排序(无论情况如何)

SORT_NATURAL | SORT_FLAG_CASE

演示:https://eval.in/823308

答案 1 :(得分:0)

您的数组以这种方式排序的原因是因为PHP将在小写字符之前对大写字符进行排序。

对此的一个解决方案是使用strcasecmp作为比较函数,以不区分大小写的方式比较字符串。

你可以试试这个:

usort($array, strcasecmp); // Sort array using `strcasecmp` as the comparison function

答案 2 :(得分:0)

在您的情况下,您可以像这样使用natcasesort

   <?php 
       $taulu[] = "Ahola";
       $taulu[] = "AL-mara";
       $taulu[] = "Aalto";
       $taulu[] = "A. Pek";

       natcasesort($taulu);

       foreach ($taulu as $rivi)
      {
        echo "$rivi<br />";
      }
  ?>

这将正常工作。

相关问题