PHP二维数组根据key转数组

391 阅读1分钟
<?php

date_default_timezone_set('Asia/Shanghai');

$array = array(
	['name'=>'张','age'=>'18','sex'=>'女'],
	['name'=>'李','age'=>'18','sex'=>'男'],
	['name'=>'莫','age'=>'56','sex'=>'男'],
	['name'=>'张','age'=>'18','sex'=>'女'],
	['name'=>'王','age'=>'18','sex'=>'女'],
	['name'=>'张','age'=>'15','sex'=>'男'],
	['name'=>'列','age'=>'17','sex'=>'男'],
	['name'=>'张','age'=>'18','sex'=>'女'],
);
function getValuesByKey($array,$key,$is_del=0){
	if(empty($array)) 
		return "function getValuesByKey:array参数不可为空!";
	if($key=='') 
		return "function getValuesByKey:key参数不可为空!";
	if(empty(array_column($array, $key)))
		return "function getValuesByKey:key参数不存在数组中!";
	$cate_name = array_unique(array_column($array, $key));
	$n_data =[];
	foreach ($cate_name as $k=>$v){
		$n_d[$key]=$v;
		$rl=[];
		foreach ($array as $ko=>$vo){
			if($v==$vo[$key]){
				if($is_del == 1)
					unset($vo[$key]);
				$rl[]=$vo;
			}
		}
		$n_d['children']=$rl;
		$n_data[]=$n_d;
	}
	return $n_data;
}
print_r(getValuesByKey($array,'age',1));

代码结果