怎么让一个一维数组先按元素值排序,然后再按键值排序呢?

解决方案 »

  1.   

    先asort(),再对不满意的遍历调整。。
      

  2.   

    回:kingerq(多菜鸟) 
    怎么调整,交换元素的位置?
      

  3.   

    给你写个最简单的冒泡排序
    a[]=array(1=>23,2=>45,....)一共10个元素
    for(i:=1;i<10;i++)
    {
       for(j:=i+1;j<=10;j++)
       {
           if(a[i]<a[j])  //中间比较的运算符决定了从大到小还是从小到大
            {
               交换a[i]和a[j]的值;
            }
        }
    }
    print_r(a);
      

  4.   

    <?php
    $a=array(1=>23,2=>45,3=>15,4=>155,5=>15,6=>115,7=>15);//一共10个元素
    for($i=1;$i<10;$i++)
    {
       for($j=$i+1;$j<=10;$j++)
       {
           if($a[$i]<$a[$j])  //中间比较的运算符决定了从大到小还是从小到大
            {
             $t=$a[$i];
             $a[$i]=$a[$j];
             $a[$j]=$t;
               //交换a[i]和a[j]的值;
            }
        }
    }
    print_r($a);
    ?>
      

  5.   

    冒泡排序网上很多的。
    function _sort($arr)
    {
            $tmp = "";
            $count = count($arr);
            for ($i=0;$i<$count;$i++)
            {
                    for ($j=$count-1;$j>$i;$j--)
                    {
                            if ($arr[$j-1] > $arr[$j])
                            {
                                    $tmp = $arr[$j];
                                    $arr[$j] = $arr[$j-1];
                                    $arr[$j-1] = $tmp;
                            }
                    }
            }
            return $arr;
    }
      

  6.   

    <?php
    function paixu($n)
    {

        if (empty($n) || !is_array($n)) {
            return false;
        }
        $len = count($n);
        if ($len == 1) {
            return $n;
        }
        for ($i=0; $i<$len; $i++) {
            $key = $n[$i];
            for ($j=$i+1; $j<$len; $j++) {
                if ($n[$j] < $key) {
                    $temp = $key;
                    $key = $n[$j];
                    $n[$j]= $temp;
                }
            }
            $n[$i] = $key;
        }
        return $n;
    }
    $a=array(23,45,15,155,15,115,15);
    print_r (paixu($a));
      ?>
    Array ( [0] => 15 [1] => 15 [2] => 15 [3] => 23 [4] => 45 [5] => 115 [6] => 155 ) 
    数组加索引抛出错误,如果是单纯的数字当然是asort()比较快解决,但如果是array("zz23","zg45","zf15","zl155","zz15","zz115","zz15")这样的数组还能用asort吗?
      

  7.   

    我只是随手写的,上面程序并没有调试。不保证正确。
    _sort去掉数组中的索引正确的,下面这个随手写的。