现有多维数组,我想做个排序,键和值全是数字,要按值和键同时排序,得到结果是,值最大的在前面,值相等的键小的在前面,键和值的对应关不能变

解决方案 »

  1.   

    arsort($array);
      

  2.   

    usortfunction cmp($a, $b)
    {
        if ($a == $b) {
            return 0;
        }
        return ($a < $b) ? -1 : 1;
    }$a = array(3, 2, 5, 6, 1);usort($a, "cmp");foreach ($a as $key => $value) {
        echo "$key: $value\n";
    }
      

  3.   

    arsort()就OK了
    值从大到小排列,值相同的键从小到大排列
      

  4.   

    可以试试这个,我用过还可以<?php 
    $mix = array( 
                    array("A",10), 
                    array("B",5), 
                    array("C",100) 
                ); 
    //假设我们要对其数字进行升序排列 
    function compare($x,$y){ 
    if($x[1] == $y[1]) 
    return 0; 
    elseif($x[1] < $y[1]) 
    return -1; 
    else 
    return 1; 

    usort($mix,"compare"); 
    echo $mix[0][1]."<br />"; 
    echo $mix[1][1]."<br />"; 
    echo $mix[2][1]; 
    ?> 
    这是自定义比较函数的排序,排序中进行元素大小比较时,调用用户自定义函数裁决,函数返回-1、0、1表示比较的两个元素的大小关系,能够猜测到0表示相等,-1是小于,1是大于。
      

  5.   

    arsort()就OK了
    值从大到小排列,值相同的键从小到大排列