Jun
09
2020
二维数组按指定的键值排序
作者:
绝缘体.. 发布:
2020-06-09 14:13 分类:
未分类 阅读:
抢沙发
关于这个问题,已经有更好的解决方案了,请参考:
php二维数组按某个字段排序
不过下面的代码仍可以供参考:
原创:将二维数组按指定的键值排序。
/*
function:二维数组按指定的键值排序
author:www.phpernote.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');
微信扫一扫,打赏作者吧~