Gra*_*ant 12 php arrays sorting key
我找到了一些按值排序的答案,但不是关键.
我想做的是反向排序,所以:
$nametocode['reallylongname']='12';
$nametocode['shortname']='10';
$nametocode['mediumname']='11';
Run Code Online (Sandbox Code Playgroud)
我希望他们按此顺序排列
中名短名
非常感谢
Gum*_*mbo 24
另一种解决方案array_multisort:
$keys = array_map('strlen', array_keys($arr));
array_multisort($keys, SORT_DESC, $arr);
Run Code Online (Sandbox Code Playgroud)
这$keys是一个键的长度数组$arr.该数组按降序排序,然后用于对$arr使用的值进行排序array_multisort.
您可以使用用户定义的键排序功能作为回调uksort:
function cmp($a, $b)
{
if (strlen($a) == strlen($b))
return 0;
if (strlen($a) > strlen($b))
return 1;
return -1;
}
uksort($nametocode, "cmp");
foreach ($nametocode as $key => $value) {
echo "$key: $value\n";
}
Run Code Online (Sandbox Code Playgroud)
快速注意 - 反转排序只需切换"1"和"-1".
基于@thetaiko答案,更简单的回调:
function sortByLengthReverse($a, $b){
return strlen($b) - strlen($a);
}
uksort($nametocode, "sortByLengthReverse");
Run Code Online (Sandbox Code Playgroud)
小智 5
看看我强大的内联方法。为子孙后代保护全球空间!
uksort($data, create_function('$a,$b', 'return strlen($a) < strlen($b);'));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7573 次 |
| 最近记录: |