好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php一维二维数组键排序方法总结 - php数组

php一维二维数组键排序方法总结

在php中数组排序一直是一个老生常谈的问题,下面我们来集中讲一下关于在php中一维数组与二维数组排序的实现程序,各位同学可参考.

功能:对数组进行重新排序.

说明:冒泡排序 (一维数组)(二维数组某个健排序)

两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止

设想被排序的数组R[1..N] 垂直竖立,将每个数据元素看作有重量的气泡,从下往上扫描数组,凡扫描违反原则的轻气泡,就使其向上]漂浮],如此反复进行,直到最后任何两个气都是轻者在上,重者在下为止,代码如下:

/**   * 冒泡排序 (一维数组)(二维数组某个健排序)   * 两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止    * 设想被排序的数组R[1..N] 垂直竖立,将每个数据元素看作有重量的气泡,从下往上扫描数组,凡扫描违反原则的轻气泡,就使其向上"漂浮".如此反复进行.    * 直到最后任何两个气都是轻者在上,重者在下为止.    */   function  bubble_sort( $array , $key =null) {           $count  =  count ( $array );           if ( $count  < 0) {               return  false;          }           for ( $i  = 0;  $i  <  $count ;  $i ++) {               for ( $j  =  $count  - 1;  $j  >  $i ;  $j --) {                   if ( $key  && isset( $array [ $key ])){ //二维数组健存在                        if ( $array [ $j ][ $key ] <  $array [ $j  - 1][ $key ]) {                           $tmp  =  $array [ $j ];                           $array [ $j ] =  $array [ $j  - 1];                           $array [ $j  - 1] =  $tmp ;                      }                  } else {  //一维数组                        if ( $array [ $j ] <  $array [ $j  - 1]) {                           $tmp  =  $array [ $j ];                           $array [ $j ] =  $array [ $j  - 1];                           $array [ $j  - 1] =  $tmp ;                      }                  }              }          }           return   $array ;      } 

array_multisort排序使用方法

array_multisort() 对二位数组按照指定键值排序的使用方法,本例中定义了一个名为 $data 的二维数组,然后对它进行排序,方法代码如下:

$data [] =  array ( 'volume'  => 67,  'edition'  => 2);   $data [] =  array ( 'volume'  => 86,  'edition'  => 1);   $data [] =  array ( 'volume'  => 85,  'edition'  => 6);   $data [] =  array ( 'volume'  => 98,  'edition'  => 2);   $data [] =  array ( 'volume'  => 86,  'edition'  => 6);   $data [] =  array ( 'volume'  => 67,  'edition'  => 7);       // 取得列的列表    foreach  ( $data   as   $key  =>  $row ) {        $volume [ $key ]  =  $row [ 'volume' ];        $edition [ $key ] =  $row [ 'edition' ];   }       // 将数据根据 volume 降序排列,根据 edition 升序排列    // 把 $data 作为最后一个参数,以通用键排序    array_multisort ( $volume , SORT_DESC,  $edition , SORT_ASC,  $data );       print_r( $data );    /*   执行后打印结果如下:   Array    (        [0] => Array            (                [volume] => 98                [edition] => 2            )        [1] => Array            (                [volume] => 86                [edition] => 1            )        [2] => Array            (                [volume] => 86                [edition] => 6                     [3] => Array            (                [volume] => 85                [edition] => 6            )        [4] => Array            (                [volume] => 67                [edition] => 2            )        [5] => Array            (                [volume] => 67                [edition] => 7            )    )   */  

一维数组排序我们只要使用sort()就可以了,相对应的 asort($arr); 函数是按键值排序,且维持原有的键值关系。

同样原理,rsort(); arsort(); krsort(); 函数除了排序是按降序排列外,其它与sort(); rsort(); ksort(); 相同。

查看更多关于php一维二维数组键排序方法总结 - php数组的详细内容...

  阅读:39次