【php】二维数组按指定的键名排序

/*二维数组按指定的键值排序*/
function array_sort($array,$keys,$type='asc'){
	if(!isset($array) || !is_array($array) || empty($array)){
		return '';
	}
	//排序字段名,如:id
	if(!isset($keys) || trim($keys)==''){
		return '';
	}
	//排序方式,如:desc、asc
	if(!isset($type) || $type=='' || !in_array(strtolower($type),array('asc','desc'))){
		return '';
	}
	//定义一个数组
	$keysvalue=array();
	foreach($array as $key=>$val){
		//对排序字段值进行过滤
		$val[$keys] = str_replace('-','',$val[$keys]);
		$val[$keys] = str_replace(' ','',$val[$keys]);
		$val[$keys] = str_replace(':','',$val[$keys]);

		//将记录中指定的键名放入数组中,如:[0]=>5,[1]=>3,[2]=>6
		$keysvalue[] =$val[$keys];//排序字段,如:id         索引=》排序键名
	}
	asort($keysvalue); //按值升序排序,且保持键名与键值之间的索引关系,如:[1]=>3,[0]=>5,[2]=>6
	reset($keysvalue); //指针重新指向数组第一个
	foreach($keysvalue as $key=>$vals) {
		$keysort[] = $key;//0=>[1],1=>[0],2=>[2]
	}
	$keysvalue = array();
	$count=count($keysort);//排序记录数
	if(strtolower($type) != 'asc'){//降序
		for($i=$count-1; $i>=0; $i--) {
			$keysvalue[] = $array[$keysort[$i]];
		}
	}else{//升序
		for($i=0; $i<$count; $i++){
			$keysvalue[] = $array[$keysort[$i]];
		}
	}
	return $keysvalue;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值