考虑以下关联数组多类型的关联数组在PHP
$arr = Array
(
[banana] => 2
[cherry] => 1
[orange] => 3
[grapefruit] => 1
[apple] => 1
)
我想它的方式,将类似于PLSQL项排序:A DESC, B ASC
(其中A是值和B是关键)含义:
使橙子和香蕉是第一,因为价值的,但后来我有苹果,樱桃和葡萄柚按字母顺序排列,因为它们具有相同的值。
我的尝试:
1.运行ksort()然后asort()/rsort()希望第二类将橙子和香蕉一下子提高到数组的开头没有搞乱字母排序其他3项。我错了。它确实把所有东西都弄乱了。所以我检查出:
2. sort functions和array_multisort()。但显然它一次排列几个数组,或者是一个多维数组。
3.我也试图定义以下比较功能:
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
)
您将如何使用所产生的阵列? – Galen
@Galen以一种非常复杂和强大的方式,从来没有在地球上看到;) – alfasin
关于你的第一种方法,它不工作,因为PHP排序不稳定(即保持相同的值的顺序)。 – Sarke