PHP - 如何通过变量字符的外观对数组进行排序

时间:2015-07-25 22:14:51

标签: php arrays sorting

我有一个数组

$array = array("no_spaces","one space","two 2 spaces");

我想按特定字符出现的频率对数组进行排序/排序。在这种情况下“”

所以作为回报我会得到以下数组

    [0]=>
    string(12) "two 2 spaces"
    [1]=>
    string(9) "one space"
    [2]=>
    string(10) "no_spaces"

我一直在浏览php.net手册,但没有发现任何能够做到这一点的命令。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

usort与方法结合使用以搜索字符(或图案)

$array = array("no_spaces","one space","no_space","two 2 spaces", "two 1spaces", "two 3 3 spaces");
usort( $array, "charSort" );

echo '<pre>';
print_r( $array );
echo '</pre>';

function charSort($a, $b) {
    preg_match_all( '/ /', $a, $aa );
    preg_match_all( '/ /', $b, $bb );
    if( count( $aa[0] ) == count( $bb[0] ) )
        return 0;
    return (count( $aa[0] ) < count( $bb[0] )) ? -1 : 1;
}

答案 1 :(得分:-2)

这应该适合你:

只需使用usort()substr_count()对数组进行排序,例如

usort($array, function($a, $b){
    return substr_count($b, " ") - substr_count($a, " ");
});