牛骨文教育服务平台(让学习变的简单)
博文笔记

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

创建时间:2016-08-07 投稿人: 浏览次数:194

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
        )


)
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。