如何按字数排序并按字母顺序排序?

时间:2015-05-28 22:44:43

标签: php sorting

如何按字母顺序对一组短语进行排序,还要考虑单词的数量?我已经尝试sort()usort()natsort(),但没有运气。例如:

Cube Pro Duo
Cube Pro
Cube Pro Trio

我希望" Cube Pro"首先是因为它的字数较少,但似乎无法正常工作,无论我使用哪种方式?

1 个答案:

答案 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
)
相关问题