动态搜索数组

Tob*_*eek 5 php arrays

我正陷入两难境地,我正在尝试创建一个"动态"搜索数组的函数,在这种情况下是我的会话数组,但它应该适用于任何数组.现在这不是我的问题,我的问题是动态地允许这样做......

这就是我所拥有的

public static function get($search = 'First/Second/Third') {    
    $explode = explode('/',$search);
    $count = count($explode);
    if ($count == 1)
        if (isset($_SESSION[$explode[0]]))
            return $_SESSION[$explode[0]];
    elseif ($count == 2)
        if (isset($_SESSION[$explode[0]][$explode[1]]))
            return $_SESSION[$explode[0]][$explode[1]];
    elseif ($count == 3)
        if (isset($_SESSION[$explode[0]][$explode[1]][$explode[2]]))
            return $_SESSION[$explode[0]][$explode[1]][$explode[2]];
}
Run Code Online (Sandbox Code Playgroud)

所以我想说我有一个数组:

 array('First' => array('Second' => array('Third' => 'TEST VALUE'));
Run Code Online (Sandbox Code Playgroud)

现在我想打电话

$value = get('First/Second/Third');
Run Code Online (Sandbox Code Playgroud)

然后将"Test Value"作为$ value变量的值返回.

在这种情况下它可以工作,但它不是动态的,我希望它能够处理甚至10层深的阵列,而不添加越来越多的线....

那么也许有人在这里比我聪明:)

谢谢!!

Bab*_*aba 7

$array = array(
        'First' => array(
                'Second' => array(
                        'Third' => 'TEST VALUE'
                )
        )
);
echo get($array, 'First/Second/Third'); //  TEST VALUE
Run Code Online (Sandbox Code Playgroud)

使用的功能

function get($data, $part) {
    foreach(explode("/", $part) as $key) {
        $data = isset($data[$key]) ? $data[$key] : null;
    }
    return $data;
}
Run Code Online (Sandbox Code Playgroud)

现场演示