2013-04-08 112 views
4

我使用asort对简单数组:排序数组由值,那么关键

$arr = array('A'=>30, 'B'=>12, 'K'=>23, 'X'=>1, 'H'=>11, 'T'=>1, 'U'=1); 

asort($arr) 

产生

Array 
(
    [A] => 30 
    [K] => 23 
    [B] => 12 
    [H] => 11 
    [X] => 1 
    [T] => 1 
    [Z] => 1 
) 

是否存在被价值和一个键按本机方式调用(同时保留键/值关系)?

例如,我想我的结果落得这样的:

Array 
(
    [A] => 30 
    [K] => 23 
    [B] => 12 
    [H] => 11 
    [T] => 1 
    [X] => 1 
    [Z] => 1 
) 

回答

0
<?php 
$arr = array('A'=>30, 'B'=>12, 'K'=>23, 'X'=>1, 'H'=>11, 'T'=>1, 'U'=>1); 

Function ArrSort ($Array){ 
    $tag = array(); 
    $num = array(); 

    foreach($Array as $key => $value){ 
     $tag[] = $key; 
     $num[] = $value; 
    } 
    array_multisort($num, SORT_DESC, $tag, SORT_ASC, $Array); 
    return $Array; 

} 

print_r(ArrSort($arr)); 
?> 

输出:

Array 
(
    [A] => 30 
    [K] => 23 
    [B] => 12 
    [H] => 11 
    [T] => 1 
    [U] => 1 
    [X] => 1 
) 

组块以上已被编辑成一个功能从位于这里的原帖:PHP array multiple sort - by value then by key?

+0

再次检查问题 - 我期待的结果与您的答案状态不同。 – 2013-04-08 20:08:34

+0

现在修改代码 – 2013-04-08 20:10:04

+0

我想我在这里:http://stackoverflow.com/a/2282247/721073 – 2013-04-08 20:10:31