算法-大家能否提供一个对二维数组高效的排序方法

发布于 2016-12-13 21:31:40 字数 211 浏览 1277 评论 5

例如$arr=array(

‘a’=> array('id'=>1,'type'=>'a'),
‘b’=>array('id'=>5,'type'=>'a'),
‘c’=> array('id'=>2,'type'=>'a'),
.........

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

夜无邪 2017-09-18 02:07:26

 $arr=array(
'a'=> array('id'=>1,'type'=>'a'),
'b'=>array('id'=>5,'type'=>'a'),
'c'=> array('id'=>2,'type'=>'5'),
);
$orderby = array();
foreach($arr as $key => $val) { $orderby[$key] = $val;}
array_multisort($orderby,SORT_ASC,$arr);
//array_multisort($orderby,SORT_DESC,$arr); //安装id降序

var_dump($arr)

;

有一个封装好的函数:

 /**
* 二维数组根据特定键值索引排序
* @param $arr array 二维数组
* @param $orderbyKey string 特定索引
* @param $type string asc or desc
* @return array
*/
function arrayOrderBy($arr, $orderbyKey, $type = 'ASC') {
$column = array();
foreach($arr as $key => $value) {
$column[$key] = $value[$orderbyKey];
}
$type = strtoupper($type) == "ASC" ? SORT_ASC : SORT_DESC;
array_multisort($column, $type, $arr);
return $arr;
}

想挽留 2017-08-08 22:11:55

下面适合多维的数组排序:

<?php
//利用array_map获取要依据排序的数组
$arrField=array(

'a'=> array('id'=>1,'type'=>'a'),
'b'=>array('id'=>5,'type'=>'a'),
'c'=> array('id'=>2,'type'=>'a'),
);
$arr = array_map(create_function('$n', 'return $n["id"];'), $arrField);
//利用array_mutisort来进行排序
array_multisort($arr, SORT_DESC,$arrField);
print_r($arrField);
?>

晚风撩人 2017-07-04 13:13:32

 $arr=array(
'a'=> array('id'=>1,'type'=>'a'),
'b'=>array('id'=>5,'type'=>'a'),
'c'=> array('id'=>2,'type'=>'5'),
);
array_multisort($arr);

偏爱自由 2017-06-17 14:44:53

 function mysort($a, $b) {
if ($a['id'] == $b['id']) return 0;
return ($a["id"] >$b['id']) ? -1 : 1;
}
usort($info, 'mysort');

偏爱自由 2017-03-22 23:19:54

PHP本身是有一个多维数组排序的函数的。
bool array_multisort ( array $ar1 [, mixed $arg [, mixed $... [, array $... ]]] )

PHP中二维数组的排序方法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文