在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(); 相同。
http://www.bkjia.com/PHPjc/631253.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631253.htmlTechArticle在php中數組排序一直是一個老生常談的問題,下面我們來集中講一下關於在php中一維數組與二維數組排序的實現程式,各位同學可參考. 功能...