2013-05-26 46 views
0

有了这个:获取项,assoctivate阵列

//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方法是否灵活,并且在每个非连续数组中有多深?

+0

您需要编写一个递归函数来钻取数组 – 2013-05-26 22:41:41

+0

如果您使用的是PHP 5.4,您可以使用:$ obj-> getParam(“db”)['host'];' –

回答

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

这将通过您的数组递归搜索您的密钥并返回匹配的第一个值。