如何按字母顺序对一组短语进行排序,还要考虑单词的数量?我已经尝试sort()
,usort()
和natsort()
,但没有运气。例如:
Cube Pro Duo
Cube Pro
Cube Pro Trio
我希望" Cube Pro"首先是因为它的字数较少,但似乎无法正常工作,无论我使用哪种方式?
答案 0 :(得分:1)
这应该适合你:
usort()
是前往这里的方式。我首先比较单词的数量,通过用substr_count()
来计算空格的大小。如果单词数相等,我只需要strcasecmp()
来比较两个字符串。如果单词的数量不同,我只需比较它们。
<?php
$arr = ["Cube Pro Duo", "Cube Pro", "Cube Pro Trio"];
usort($arr, function($a, $b){
$countA = substr_count($a, " ")+1;
$countB = substr_count($a, " ")+1;
if($countA == $countB) {
return strcasecmp($a, $b);
} else {
return $countA > $countB ? 1 : -1;
}
});
print_r($arr);
?>
输出:
Array
(
[0] => Cube Pro
[1] => Cube Pro Duo
[2] => Cube Pro Trio
)