如何对PHP中的多维数组进行有效排序?
- 内容介绍
- 文章标签
- 相关推荐
本文共计269个文字,预计阅读时间需要2分钟。
php/** * 根据指定的键值对对二维数组进行排序 * @param array $array 待排序的二维数组 * @param string $key 排序的键名 * @return array 排序后的数组 */function sortArrayByKey($array, $key) { usort($array, function($a, $b) use ($key) { return $a[$key] $b[$key]; }); return $array;}
$array=[ ['id'=> 8, 'username'=> 'phpernote'], ['id'=> 9, 'username'=> 'com'], ['id'=> 5, 'username'=> 'www']];
$array_s=sortArrayByKey($array, 'id');print_r($array_s);
/* function:二维数组按指定的键值排序 $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'); */ public 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'){ for($i=$count-1; $i>=0; $i--) { $keysvalue[] = $array[$keysort[$i]]; } }else{ for($i=0; $i<$count; $i++){ $keysvalue[] = $array[$keysort[$i]]; } } return $keysvalue; }
本文共计269个文字,预计阅读时间需要2分钟。
php/** * 根据指定的键值对对二维数组进行排序 * @param array $array 待排序的二维数组 * @param string $key 排序的键名 * @return array 排序后的数组 */function sortArrayByKey($array, $key) { usort($array, function($a, $b) use ($key) { return $a[$key] $b[$key]; }); return $array;}
$array=[ ['id'=> 8, 'username'=> 'phpernote'], ['id'=> 9, 'username'=> 'com'], ['id'=> 5, 'username'=> 'www']];
$array_s=sortArrayByKey($array, 'id');print_r($array_s);
/* function:二维数组按指定的键值排序 $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'); */ public 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'){ for($i=$count-1; $i>=0; $i--) { $keysvalue[] = $array[$keysort[$i]]; } }else{ for($i=0; $i<$count; $i++){ $keysvalue[] = $array[$keysort[$i]]; } } return $keysvalue; }

