php - 通过数组进行动态搜索

标签 php arrays

我遇到了一个难题,我正在尝试创建一个函数来“动态”搜索数组,在本例中是我的 session 数组,但它应该适用于任何数组。现在这不是我的问题,我的问题是动态地允许这样做...

这是我的

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]];
}

假设我有一个数组:

 array('First' => array('Second' => array('Third' => 'TEST VALUE'));

现在我要打电话

$value = get('First/Second/Third');

然后获取“测试值”作为我的 $value 变量的值。

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

好吧,也许有人比我更聪明:)

谢谢!!

最佳答案

$array = array(
        'First' => array(
                'Second' => array(
                        'Third' => 'TEST VALUE'
                )
        )
);
echo get($array, 'First/Second/Third'); //  TEST VALUE

使用的函数

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

Live Demo

关于php - 通过数组进行动态搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16926039/

相关文章:

php - 为什么 ${0x0} 是正确的?

Javascript 在循环中返回最大的值

arrays - 从数组中删除元素的复杂度是多少?

php检查数组中至少有两个大于0的值

javascript - 将复选框绑定(bind)到 Angular 模型数组

php - 在 App Engine 灵活的 PHP 7.0 上连接到第二代 Cloud SQL - 缺少套接字

php - PHP克隆父子树,从子树开始避免无限递归

php - 使用php获取MySQL表中的所有唯一数字

javascript - PHP从xml文件中解析json

php - 确定 PHP 数组是否使用键或索引