有了这个:
//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 :(得分: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;
}
这将以递归方式搜索数组中的键,并返回匹配的第一个值。