技术饭
PHP数组根据数组内的某个单元字段排序
PHP数组根据数组内的某个单元字段排序,一个二维数组$array中需要按照sort接着是其他数组,如果两个或多个值相同,它将对下一个数组进行排序。从大到小的顺序,重新排列数组的顺序。那么这时候可以使用数组批量排序函数array_multisort()来帮助排序,array_multisort() 函数返回排序数组。您可以输入一个或多个数组。函数先对第一个数组进行排序。
如题,给出一个PHP数组,数组结构如下:
$arr = array(
array(
'name'=>'a',
'sort'=>1
),
array(
'name'=>'b',
'sort'=>8
),
array(
'name'=>'c',
'sort'=>2
),
array(
'name'=>'d',
'sort'=>11
)
);
需要是需要按照norder从大到小的顺序,重新排列$arr数组的顺序。
可以使用array_multisort函数来帮助排序:
function p($arr){
echo "<pre>";
print_r($arr);
echo "</pre>";
}
$arr = array(
array(
'name'=>'sadas',
'norder'=>1
),
array(
'name'=>'sadas',
'norder'=>11
),
array(
'name'=>'sadas',
'norder'=>123
),
array(
'name'=>'sadas',
'norder'=>11
)
);
$flag = array();
foreach($arr as $v){
$flag[] = $v['norder'];
}
array_multisort($flag, SORT_DESC, $arr);
p($arr);
--------- 或者 ---------
//先用array_column 多维数组按照纵向(列)取出
$date = array_column($arr, 'run_date');
//上面得到的结果:array(0=>'2017-11-21',1=>'2017-11-20',3=>'2017-11-22')
//再用array_multisort 结合array_column得到的结果对$arr进行排序
array_multisort($date,SORT_ASC,$arr);
//最终的结果:
$arr=array(
0=>array(
'run_date'=>'2017-11-20',
'count'=>'5'
),
1=>array(
'run_date'=>'2017-11-21',
'count'=>'10'
),
2=>array(
'run_date'=>'2017-11-22',
'count'=>'10'
)
);
文明上网理性发言!