Php 使用密钥数组访问多维数组?

Php 使用密钥数组访问多维数组?,php,Php,例如,如果我有这个数组: $my_array = array('a' => array('b' => 'c')); 有没有办法这样访问它: $my_value = access_array($my_array, array('a', 'b')); // $my_value == 'c' 我知道我可以写这篇文章,但我很好奇PHP中是否已经存在类似的东西。一种可能的(递归)方法: function access_array(array $target, array $keys) {

例如,如果我有这个数组:

$my_array = array('a' => array('b' => 'c'));
有没有办法这样访问它:

$my_value = access_array($my_array, array('a', 'b'));
// $my_value == 'c'
我知道我可以写这篇文章,但我很好奇PHP中是否已经存在类似的东西。

一种可能的(递归)方法:

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; 
}
另一种可能的(迭代)方法:

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的基本工具 提供以构建一体化工具

轻松的

函数式编程支持者

function get_nested_key_val($ary, $keys) {
    return array_reduce($keys, function($a, $k) { return $a[$k]; }, $ary);
}

不,不是单发功能。但确实需要编写一个简短的递归函数。我真的很想知道,使用这个函数比使用括号表示法(
$my_array['a']['b']
)要好多少。@raina77ow:我假设这不是真正的代码,但另一个进程提供了一个键数组。但是,如果OP确实打算按原样使用它,那么你有一个很好的观点。这里有一个很好的PHP数组函数列表:或者,简而言之:不包括电池)我不想重新发明轮子,所以我想我应该检查一下它是否存在。毕竟,访问深度愚蠢的嵌套数组感觉就像我使用PHP时所做的90%P