Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
558 views
in Technique[技术] by (71.8m points)

php - Access multidimensional array by string with delimiter

suppose i have a multidimensional array like something like this:

<?php

$array = array("test1" => array("test2" => array("test3" => 1)), ... foo1 = array("foo2" => 2));

?>

i want to access an array element by passing a string like "test1.test2.test3" to a function which in turn calls the array element. I could use eval() by replacing the string with [] (calling $array["test2]["test3"] ...) but i wonder if there is a different more solid approach in calling a array element without traversing through all of its depth or use eval().

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You could use

function get_multi($arr, $str) {
    foreach (explode('.', $str) as $key) {
        if (!array_key_exists($key, $arr)) {
            return NULL; 
        }
        $arr = $arr[$key];
    }

    return $arr;
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...