【php二维数组排序,详解。 arr是原数据,keys指定按那个键值进行排序,order排序规则,1升序、0降序】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、php二维数组排序,通用
    • arr是原数据,keys指定按那个键值进行排序,order排序规则,1升序、0降序


前言

php二维数组排序,详解
arr是原数据,keys指定按那个键值进行排序,order排序规则,1升序、0降序


提示:以下是本篇文章正文内容,下面案例可供参考

一、php二维数组排序,通用

arr是原数据,keys指定按那个键值进行排序,order排序规则,1升序、0降序

代码如下(示例):

function doSort($arr,$keys,$order){
		if(!is_array($arr)){	//判断数据是否为数组
			return false;
		}
		$keys_value = array();
		foreach($arr as $key=>$value){
			$keys_value[$key] = $value[$keys];		
		}
		//print_r($keys_value);
		//将按排序的键值取出来,这里的输出结果为
		/*Array(
    		[d] => 5
    		[b] => 2
    		[a] => 8
    		[c] => 1
		)*/
		if($order == 0){	//降序,则按键值进行降序排序,反之则升序排序
			arsort($keys_value);
		}else{
			asort($keys_value);
		}
		//print_r($keys_value);
		/*
		Array
		(
    		[c] => 1
    		[b] => 2
    		[d] => 5
    		[a] => 8
		)
		*/
		reset($keys_value);	//将内部指针指向数组中的第一个元素。
		foreach($keys_value as $key=>$val){
			$keysort[$key] = $key;	//将数据的键单独取出
		}
		//print_r($keysort);
		/*
		Array
		(
		    [c] => c
    		[b] => b
    		[d] => d
    		[a] => a
		)
		*/
		$new_arr = array();
		foreach($keysort as $key=>$vals){
			$new_arr[$key] = $arr[$vals];	//按照指定的键值和排序方式进行组合
		}
		return $new_arr;
	}

	$arr = array(
		'd' => array('id' => 5, 'name' =>'f', 'age' => 7),
		'b' => array('id' => 2,'name' => 'c','age' => 4),
		'a' => array('id' => 8,'name' => 'a','age' => 5),
		'c' => array('id' => 1,'name' => 'e','age' => 2)
	);
	$res = doSort($arr,'id',1);
	print_r($res);
	//输出结果为
	/*
	Array
	(
    	[c] => Array
        	(
            	[id] => 1
            	[name] => e
            	[age] => 2
        	)
    	[b] => Array
        	(
            	[id] => 2
            	[name] => c
            	[age] => 4
        	)
    	[d] => Array
        	(
            	[id] => 5
            	[name] => f
            	[age] => 7
        	)
    	[a] => Array
        	(
            	[id] => 8
            	[name] => a
            	[age] => 5
        	)
	)
	*/

你可能感兴趣的:(PHP,php)