考虑以下关联数组
$arr = Array
(
[banana] => 2
[cherry] => 1
[orange] => 3
[grapefruit] => 1
[apple] => 1
)
我想以类似于PLSQL术语的方式进行排序:A DESC,B ASC
(其中A为值,B为关键字)含义:
$arr = Array
(
[orange] => 3
[banana] => 2
[apple] => 1
[cherry] => 1
[grapefruit] => 1
)
所以橙子和香蕉是第一个因为VALUE,但随后苹果,樱桃和葡萄柚按字母顺序排列,因为它们有相同的值.
我试过的
运行ksort(),然后asort()/rsort()希望第二种排序将橙色和香蕉撞到阵列的开头,而不会弄乱其他3项的字母排序.我错了.它确实搞乱了一切.所以我检查了:2. sort functions和array_multisort().但显然它会立即排列几个数组,或多维数组.
我也试图定义以下比较函数:
function cmp($a, $b)
{
foreach ($a as $key1 => $val1) {
foreach ($b as $key2 => $val2) {
if($val1 == $val2){
return strcmp($key1,$key2);
}
else if ($val1 > $val2){
return 1;
}
else{ // $val1 < $val2
return -1;
}
}
}
}
并用usort()打电话,但也没有工作.
所以我的问题是:是否有一个实现请求行为的PHP方法?
对于欧根:
我试过了,没有办法
排序前:
Array
(
[lamb] => 3
[rule] => 1
[children] => 1
[teacher] => 2
[eager] => 1
)
并排序后:
Array
(
[children] => 1
[eager] => 1
[rule] => 1
[teacher] => 2
[lamb] => 3
)