我正在使用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这不起作用。
那么,为什么这在所有情况下都不起作用?
答案 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
答案 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 />";
}
?>
这将正常工作。