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数组的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did31358