get Item,associative array

时间:2013-05-26 22:38:18

标签: php

有了这个:

//Example array
$arr = array(
'db' => array('host' => 'local', 'user' => 'root'));


    public function getParam($name, $default = null)
        {
            if (array_key_exists($name, $this->params)) {
                return $this->params[$name];
            }

            return $default;
        }

我可以得到整个数据库阵列,但是如果我只想用getParam方法()来达到“主机”怎么办呢?我如何需要扩展getParam方法以使其灵活并且在每个不重要的地方工作有多深数组是?

1 个答案:

答案 0 :(得分:0)

不确定是否有更好的解决方案,但我可能会做一个递归的解决方案。像这样:

public function getParam($name, $default = null, $arrayToCheck = false)
{
    if (!$arrayToCheck) 
        $arrayToCheck = $this->params;

    if (array_key_exists($name, $arrayToCheck)) {
        return $arrayToCheck[$name];
    }

    // if we get here, we haven't found it
    foreach($arrayToCheck as $arrayItem)
    {
        if (is_array($arrayItem))
        {
            return $this->getParam($name, $default, $arrayItem);
        }
    }


    return $default;
}

这将以递归方式搜索数组中的键,并返回匹配的第一个值。