二维数组根据字段进行排序 [ 2.0 版本 ]
/**
* 二维数组根据字段进行排序
* @params array $array 需要排序的数组
* @params string $field 排序的字段
* @params string $sort 排序顺序标志 SORT_DESC 降序;SORT_ASC 升序
*/
public static function arraySequence($array, $field, $sort = 'SORT_ASC')
{
if (count($array)>0) {
$arrSort = array();
foreach ($array as $uniqid => $row) {
foreach ($row as $key => $value) {
$arrSort[$key][$uniqid] = $value;
}
}
array_multisort($arrSort[$field], constant($sort), $array);
}
return $array;
}
JoeHandsome 北京
注册时间:2017-10-10
最后登录:2024-11-15
在线时长:55小时29分
最后登录:2024-11-15
在线时长:55小时29分
- 粉丝9
- 金钱38140
- 威望50
- 积分39190
共 5 条评论
写的不好,不喜勿喷
//$array是需要排序的数组,$field是排序的字段名
$items = array_column($array,$field);
array_multisort($items,SORT_DESC,$array);
使用这两个数组函数更简洁
如果你是用的Yii,我感觉用这个也是可以的。
$data = [ ['age' => 30, 'name' => 'Alexander'], ['age' => 30, 'name' => 'Brian'], ['age' => 19, 'name' => 'Barney'], ]; ArrayHelper::multisort($data, ['age', 'name'], [SORT_ASC, SORT_DESC]);
是,我这个算法只是一个粗略的写法
usort 写好比较大小的函数 传过去就可以
usort($data, function($a, $b) {return strcmp($a['name'], $b['name']);})
array_multisort不香吗?
都可以啊。关键是你要怎么用