关于这个问题,已经有更好的解决方案了,请参考:
php二维数组按某个字段排序
不过下面的代码仍可以供参考:
原创:将二维数组按指定的键值排序。
/* function:二维数组按指定的键值排序 author:www.maopiaopiao.com */ function array_sort($array,$keys,$type='asc'){ if(!is_array($array)||empty($array)||!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'){ for($i=$count-1;$i>=0;$i--){ $keysvalue[]=$array[$keysort[$i]]; } }else{ for($i=0;$i<$count;$i++){ $keysvalue[]=$array[$keysort[$i]]; } } return $keysvalue; }
例如有下列这样一个数组:
$array=array( 0=>array('id'=>8,'username'=>'phpernote'), 1=>array('id'=>9,'username'=>'com'), 2=>array('id'=>5,'username'=>'www') );
现在需要将这个二维数组按id升序排列,则:
array_sort($array,'id','asc');