PHP:按数组值的长度对数组进行排序?
我做了一个字谜机,我有一系列正匹配。麻烦的是它们都是不同的顺序,我希望能够对数组进行排序,以便首先显示最长的数组值。
有人对如何做到这一点有任何想法吗?
我做了一个字谜机,我有一系列正匹配。麻烦的是它们都是不同的顺序,我希望能够对数组进行排序,以便首先显示最长的数组值。
有人对如何做到这一点有任何想法吗?
使用 http://us2.php.net/manual/en/function.usort.php
使用此自定义函数
function sort($a,$b){
return strlen($b)-strlen($a);
}
usort($array,'sort');
如果要保留旧索引,请使用 uasort,如果您不关心,请使用 usort。
另外,我相信我的版本更好,因为usort是一个不稳定的排序。
$array = array("bbbbb", "dog", "cat", "aaa", "aaaa");
// mine
[0] => bbbbb
[1] => aaaa
[2] => aaa
[3] => cat
[4] => dog
// others
[0] => bbbbb
[1] => aaaa
[2] => dog
[3] => aaa
[4] => cat
如果你想以PHP 5.3的方式做到这一点,你可能想创建这样的东西:
usort($array, function($a, $b) {
return strlen($b) - strlen($a);
});
这样,您就不会污染全局命名空间。
但是,仅当您在源代码中的单个位置需要它以保持干燥时,才执行此操作。