php二维数组多字段排序实现mysql order功能

26 篇文章 0 订阅

php二维数组多字段排序实现mysql order功能:即按照某个字段排序时如果字段相同,再按照第二个字段排序

使用php原生的array_multisort()函数,执行速度会快些且降低自定义函数的依赖,关于array_multisort详细使用 参考:http://blog.csdn.net/nuli888/article/details/52145187

<?php
function sortByCols($list,$field){
	$sort_arr=array();
	$sort_rule='';
	foreach($field as $sort_field=>$sort_way){
		foreach($list as $key=>$val){
			$sort_arr[$sort_field][$key]=$val[$sort_field];
		}
		$sort_rule .= '$sort_arr["' . $sort_field . '"],'.$sort_way.',';
	}
	if(empty($sort_arr)||empty($sort_rule)){ return $list; }
	eval('array_multisort('.$sort_rule.' $list);');//array_multisort($sort_arr['parent'], 4, $sort_arr['value'], 3, $list);
	return $list;
}
$list = array(
	array('id' => 1, 'value' => '1-1', 'parent' => 1),
	array('id' => 2, 'value' => '2-1', 'parent' => 1),
	array('id' => 3, 'value' => '3-1', 'parent' => 1),
	array('id' => 4, 'value' => '4-1', 'parent' => 2),
	array('id' => 5, 'value' => '5-1', 'parent' => 2),
	array('id' => 6, 'value' => '6-1', 'parent' => 3),
);
$list = sortByCols($list, array(
	'parent' => SORT_ASC, 
	'value' => SORT_DESC,
));
print_r($list);exit;



Array
(
    [0] => Array
        (
            [id] => 3
            [value] => 3-1
            [parent] => 1
        )


    [1] => Array
        (
            [id] => 2
            [value] => 2-1
            [parent] => 1
        )


    [2] => Array
        (
            [id] => 1
            [value] => 1-1
            [parent] => 1
        )


    [3] => Array
        (
            [id] => 5
            [value] => 5-1
            [parent] => 2
        )


    [4] => Array
        (
            [id] => 4
            [value] => 4-1
            [parent] => 2
        )


    [5] => Array
        (
            [id] => 6
            [value] => 6-1
            [parent] => 3
        )


)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值