动态访问多维数组值

Phi*_*une 5 php function multidimensional-array

我正在尝试查找(或创建)一个函数。我有一个多维数组:

$data_arr = [
    "a" => [
        "aa" => "abfoo",
        "ab" => [
            "aba" => "abafoo",
            "abb" => "abbfoo",
            "abc" => "abcfoo"
        ],
        "ac" => "acfoo"
    ],
    "b" => [
        "ba" => "bafoo",
        "bb" => "bbfoo",
        "bc" => "bcfoo"
    ],
    "c" => [
        "ca" => "cafoo",
        "cb" => "cbfoo",
        "cc" => "ccfoo"
    ]
];
Run Code Online (Sandbox Code Playgroud)

我想使用单维数组访问一个值,如下所示:

$data_arr_call = ["a", "ab", "abc"];

someFunction( $data_arr, $data_arr_call ); // should return "abcfoo"
Run Code Online (Sandbox Code Playgroud)

这似乎可能已经有这种类型的功能,我只是不知道要搜索什么。

Lib*_*aul 5

尝试这个

function flatCall($data_arr, $data_arr_call){
    $current = $data_arr;
    foreach($data_arr_call as $key){
        $current = $current[$key];
    }

    return $current;
}
Run Code Online (Sandbox Code Playgroud)

OP的解释:

$current变量被反复地建起来了,就像这样:

flatCall($data_arr, ['a','ab','abc']);

1st iteration: $current = $data_arr['a'];
2nd iteration: $current = $data_arr['a']['ab'];
3rd iteration: $current = $data_arr['a']['ab']['abc'];
Run Code Online (Sandbox Code Playgroud)

您还可以if ( isset($current) ) ...在每次迭代中提供错误检查。

  • 虽然此代码片段可能会解决问题,但 [包括解释](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而那些人可能不知道您提出代码建议的原因。也请尽量不要在代码中添加解释性注释,这会降低代码和解释的可读性! (2认同)