本文實例講述了PHP實現二維數組按某列進行排序的方法。分享給大家供大家參考,具體如下:
/** 二維數組 按某列排序* array_multisort($arr1,$arr2)* 手冊 例子如下**/$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);/*************************************//* 從上面的例子不難看出,array_multisort()函數* 是將每一個二維數組的列作為 一個參數進行排序* 來達到整個數組的排序*//*************************************/function sigcol_arrsort($data,$col,$type=SORT_DESC){ if(is_array($data)){ $i=0; foreach($data as $k=>$v){ if(key_exists($col,$v)){ $arr[$i] = $v[$col]; $i++; }else{ continue; } } }else{ return false; } array_multisort($arr,$type,$data); return $data;}print_r(sigcol_arrsort($data,'edition',SORT_DESC));/*說白了 原理就是:新數組 原二維數組 2 array('volume' => 67, 'edition' => 2); 1 array('volume' => 86, 'edition' => 1); 6 array('volume' => 85, 'edition' => 6); 2 array('volume' => 98, 'edition' => 2); 6 array('volume' => 86, 'edition' => 6); 7 array('volume' => 67, 'edition' => 7);這兩個數組的每一行都鎖在一起,新數組一旦變動順序,那么就會連帶每一行的二維數組也跟著變換順序 ,即新數組為參照物相當于查詢子句中的 order by*/運行結果:
Array( [0] => Array ( [volume] => 67 [edition] => 7 ) [1] => Array ( [volume] => 85 [edition] => 6 ) [2] => Array ( [volume] => 86 [edition] => 6 ) [3] => Array ( [volume] => 67 [edition] => 2 ) [4] => Array ( [volume] => 98 [edition] => 2 ) [5] => Array ( [volume] => 86 [edition] => 1 ))
希望本文所述對大家PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選