例如
array(
0=>array('a'=>1, 'b'=2, 'c'=3),
1=>array('a'=>2, 'b'=3, 'c'=1),
2=>array('a'=>3, 'b'=1, 'c'=2)
)例如这样的二维数组,我想以a字段或b字段或c字段正序排序怎么排?我现在用的方法就是冒泡法

解决方案 »

  1.   

    试了下,只按第一个元素a排的话,sort就可以了。
    其他的有待研究~
      

  2.   

    php 已经提供了工具函数:
    array_multisort -- 对多个数组或多维数组进行排序$ar = array( 
    0=>array('a'=>1, 'b'=2, 'c'=3), 
    1=>array('a'=>2, 'b'=3, 'c'=1), 
    2=>array('a'=>3, 'b'=1, 'c'=2) 
    );以a字段正序排序
    foreach($ar as $v) {
      $t = $v['a'];
    }$o = array_multisort($t, $ar);以b字段正序排序
    foreach($ar as $v) {
      $t = $v['b'];
    }$o = array_multisort($t, $ar);
      

  3.   

    您的代码有问题喔,foreach($ar as $v) { 
      $t = $v['a']; 

    这里面 $t不是数字变量,怎么比,另外我把代码写成了数组怎么出不来东西?$ar = array(0 => array('a'=>1, 'b'=>2, 'c'=>3), 
                1 => array('a'=>2, 'b'=>3, 'c'=>1), 
                2 => array('a'=>3, 'b'=>1, 'c'=>2) 
    ); 
    $t = array();
    foreach($ar as $v) { 
      $t = $v['a']; 
    } $o = array_multisort($t, $ar); 
    print_r($o);
      

  4.   

    跟着xuzuning的思路,刚才查了一下$ar = array(0 => array('a'=>5, 'b'=>3, 'c'=>3), 
                1 => array('a'=>5, 'b'=>2, 'c'=>1), 
                2 => array('a'=>1, 'b'=>1, 'c'=>2) 
    ); 
    $a = array();
    $b = array();
    foreach($ar as $k=>$v) { 
      $a[$k] = $v['a']; 
      $b[$k] = $v['b']; 
      $c[$k] = $v['c'];
    } $o = array_multisort($a, SORT_DESC, $ar); 
    $o = array_multisort($a, SORT_DESC, $b, SORT_ASC, $ar); 
    print_r($ar);早发现这个函数就好了,害我一直用冒泡