滔哥原創
/* _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\||| : |||// \ / _||||| -:- |||||- \ | | \\\ - /// | | | \_| ''\---/'' | | \ .-\__ `-` ___/-. / ___`. .' /--.--\ `. . __ ."" '< `.___\_<|>_/___.' >'"". | | : `- \`.;`\ _ /`;.`/ - ` : | | \ \ `-. \_ __\ /__ _/ .-` / / ======`-.____`-.___\_____/___.-`____.-'====== `=---=' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 佛祖保佑 永無BUG */ array(array(),array()); $arr1=array(array('itemid'=> 226,'title'=> '四中附近有一大廳出租','edittime'=> 1409387090), array('itemid'=> 311,'title'=> '四中西鄰文華園小區樓房出租','edittime'=> 1409272174), array('itemid'=> 312,'title'=> '四中西鄰文華園小區樓房出租2','edittime'=> 1409272074), array('itemid'=> 313,'title'=> '四中西鄰文華園小區樓房出租3','edittime' => 1409271174) ); $arr2=array(array('itemid'=> 226,'title'=> '四中附近有一大廳出租12','edittime'=> 1409287090), array('itemid'=> 314,'title'=> '四中西鄰文華園小區樓房出租12','edittime'=> 1409172174), array('itemid'=> 310,'title'=> '四中西鄰文華園小區樓房出租312','edittime' => 1309271174) ); $b=mylist(array_merge($arr1,$arr2)); print_r($b); function mylist($array){ $arr=array(); $list=array(); foreach($array as $v){ $arr[$v['itemid']]=$v['edittime']; $list[$v['itemid']]=$v; } arsort($arr); $newarr=array(); foreach($arr as $k=>$v){ $newarr[]=$list[$k]; } return $newarr; }
本人需求更改
/** * 按照指定鍵名對二維陣列排序 * $array 傳過來的陣列 * $key 指定的鍵名 * $type 指定的排序型別 asc 升序,desc 降序 */ function orderArray($array = array() ,$key = 'id', $type = 'asc') { $arr = array(); $list = array(); foreach($array as $v){ $arr[$v[$key]] = $v[$key]; $list[$v[$key]] = $v; } if($type == 'asc'){ asort($arr); }else{ arsort($arr); } $newarr =array(); foreach($arr as $k => $v){ $newarr[] =$list[$k]; } return $newarr; }
/** * 氣泡排序,如果二維陣列中的元素不一致,可以使用次方法 * $arr 要排序的陣列 * $key 指定要排序的欄位 */ function interpretSort( $arr = array() ,$key = 'order') { $count = count($arr); if( $count <= 0 ) return false; for( $i = 0; $i < $count; $i ++ ){ for( $j = $count - 1; $i < $j; $j --){ if( $arr[$j][$key] < $arr[$j-1][$key] ){ //交換相鄰位置的值 $tmp = $arr[$j]; $arr[$j] = $arr[$j-1]; $arr[$j-1] = $tmp; } } } return $arr; }
簡單的二維陣列按照指定欄位排序
echo "<pre>"; $arr=array( 'aaa'=>array( 'age'=>32, 'name'=>'張三' ), 'bbb'=>array( 'age'=>12, 'name'=>'李四' ), 'ccc'=>array( 'age'=>25, 'name'=>'趙六' ) ); function paixu($a,$b){ return $b['age']-$a['age']; } uasort($arr,'paixu'); print_r($arr);
要排序的key 有重複值
function RorderArray( $array = [], $key = '', $order = 'asc' ){ $sort = $order == 'asc' ? 'SORT_ASC' : 'SORT_DESC'; $arrSort = array(); foreach($array AS $uniqid => $row){ foreach($row AS $k=>$value){ $arrSort[$k][$uniqid] = $value; } } array_multisort($arrSort[$key], constant($sort), $array); return $array; }