一个有趣的数组取值简化函数,都来看看吧

$arr=[
'a1'=>[
'b1'=>[
'c1'=>['d1','d2','d3'],
'c2'=>['d1','d2','d3'],
],
'b2'=>[
'c1'=>['d1','d2','d3'],
'c2'=>['d1','d2','d3'],
]
],
'a2'=>[
'b1'=>[
'c1'=>['d1','d2','d3'],
'c2'=>['d1','d2','d3'],
],
'b2'=>[
'c1'=>['d1','d2','d3'],
'c2'=>['d1','d2','d3'],
]
],
];
有上面一个数组,现在想通过三个参数($a,$b,$c),来动态的取数组中值。情况如下:1、如果三个参数全为空,返回$arr;2、如果$a不为空,返回$arr[$a];3、如果$a、$b不为空,返回$arr[$a][$b];4、如果$a、$b、$c不为空,返回$arr[$a][$b][$c];
函数的形参可以是三个参数,或者是数组,或者动态获取传入的参数。
我写了两个函数,总感觉不太简单,特来请教。
//函数1
functionthe_array($a='',$b='',$c='')
{
$arr=['上面那个数组'];
$brr=array_filter([$a,$b,$c]);
switch(count($brr)){
case1:
return$arr[$a]??[];
break;
case2:
return$arr[$a][$b]??[];
break;
case3:
return$arr[$a][$b][$c]??[];
break;
default:
return$arr;
break;
}
}
//函数2
functionthe_array(...$param)
{
$arr=['上面那个数组'];
$brr=array_filter($param);//或者用func_get_args()获取传入的参数
switch(count($brr)){
case1:
$a=$param;
return$arr[$a]??[];
break;
case2:
[$a,$b]=$param;
return$arr[$a][$b]??[];
break;
case3:
[$a,$b,$c]=$param;
return$arr[$a][$b][$c]??[];
break;
default:
return$arr;
break;
}
}
一只名叫tom的猫
浏览 213回答 2
2回答

慕村225694

打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript