我有一个数组
$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手册,但没有发现任何能够做到这一点的命令。有什么想法吗?
答案 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, " ");
});