例如,如果我有这个数组:
$my_array = array('a' => array('b' => 'c'));
有什么方法可以这样访问它吗:
$my_value = access_array($my_array, array('a', 'b'));
// $my_value == 'c'
我知道我可以写这个,但我很好奇PHP中是否已经存在类似的东西。
简易
function get_nested_key_val($ary, $keys) {
foreach($keys as $key)
$ary = $ary[$key];
return $ary;
}
$my_array = array('a' => array('b' => 'c'));
print get_nested_key_val($my_array, array('a', 'b'));
对于功能编程支持者
function get_nested_key_val($ary, $keys) {
return array_reduce($keys, function($a, $k) { return $a[$k]; }, $ary);
}
一种可能的(递归)方法:
function access_array(array $target, array $keys) {
$target = $target[ array_shift($keys) ];
return $keys ? access_array($target, $keys) : $target;
}
另一种可能的(迭代)方法:
function access_array(array $target, array $keys) {
foreach ($keys as $k) {
$target = $target[$k];
}
return $target;
}
附言:我真的不能说它比@MarkB做的更好:
PHP是一个工具箱。里面有螺丝刀、锤子,也许还有一个量角器胶带和一支铅笔。你期望它包含一个完全开发的房子,配有水管和电线你想让它做的事。而不是四处寻找罐头开瓶器,将为您烹饪感恩节晚餐,并帮助您的孩子进入大学后,你应该学习如何使用PHP的基本工具提供给BUILD的一体化工具。