0
<%
//这是一个模拟的多维数组数据
$arr=[
    'a'=>[
        'b'=>[
            'c'=>2
        ]
    ],
    'x'=>['...']
];

//目标是取到$arr['a']['b']['c']的值
//此数组可能是通过一些复杂的业务逻辑得到
$k=['a','b','c'];

//通常要取这个值我能想到的方法是遍历$k,如:
$result=$arr;
foreach($k as $v){
    $result=$result[$v];
}
//不出意外$result的结果应该为2
%>

有没有不用遍历$k的、更优雅的方法通过$k提供的多维键名最终拿到$arr中的目标值?

11月9日提问
2 个回答
0
$result = array_reduce($k, function ($res, $v) {
  return $res[$v];
}, $arr);

其实还是遍历,只是这样写更加简练

撰写答案

推广链接