二維陣列根據指定的鍵值排序
阿新 • • 發佈:2018-11-27
function array_sort($array,$keys,$type='asc'){ if(!isset($array) || !is_array($array) || empty($array)){ return ''; } if(!isset($keys) || trim($keys)==''){ return ''; } if(!isset($type) || $type=='' || !in_array(strtolower($type),array('asc','desc'))){ return ''; } $keysvalue=array(); foreach($array as $key=>$val){ //$val[$keys] = str_replace('-','',$val[$keys]); /* $val[$keys] = str_replace(' ','',$val[$keys]); $val[$keys] = str_replace(':','',$val[$keys]);*/ $keysvalue[] =$val[$keys]; } asort($keysvalue); //key值排序 reset($keysvalue); //指標重新指向陣列第一個 foreach($keysvalue as $key=>$vals) { $keysort[] = $key; } $keysvalue = array(); $count=count($keysort); if(strtolower($type) != 'asc'){ $n = 0; for($i=$count-1; $i>=0; $i--) { //$array[$keysort[$i]]['no'] = $n+$page_cur*$page_num-($page_num-10+9); $keysvalue[] = $array[$keysort[$i]]; $n++; } }else{ for($i=0; $i<$count; $i++){ $keysvalue[] = $array[$keysort[$i]]; } } for($i=0;$i<$count;$i++){ for($j=$i;$j<$count;$j++){ if($keysvalue[$i][$keys] == $keysvalue[$j][$keys]){ if(strtolower($type) != 'asc'){//倒序,大的在前 if($keysvalue[$i]['receivables'] < $keysvalue[$j]['receivables']){ $item = $keysvalue[$i]; $keysvalue[$i] = $keysvalue[$j]; $keysvalue[$j] = $item; } }else{//正序,小的在前 if($keysvalue[$i]['receivables'] > $keysvalue[$j]['receivables']){ $item = $keysvalue[$i]; $keysvalue[$i] = $keysvalue[$j]; $keysvalue[$j] = $item; } } } } } return $keysvalue; }