我有一个名为get_config()
的函数和一个名为$config
的数组。
我使用get_config('site.name')
调用该函数,并且正在寻找返回$config
值的方法,因此对于此示例,该函数应返回$config['site']['name']
。
我差点把我的头发拉出来 - 试着不要使用eval()
!有什么想法吗?
编辑:到目前为止,我有:
function get_config($item)
{
global $config;
$item_config = '';
$item_path = '';
foreach(explode('.', $item) as $item_part)
{
$item_path .= $item."][";
$item = $config.{rtrim($item_path, "][")};
}
return $item;
}
答案 0 :(得分:1)
这应该有效:
function get_config($config, $string) {
$keys = explode('.', $string);
$current = $config;
foreach($keys as $key) {
if(!is_array($current) || !array_key_exists($key, $current)) {
throw new Exception('index ' . $string . ' was not found');
}
$current = $current[$key];
}
return $current;
}
答案 1 :(得分:0)
function get_config($item)
{
global $config;
return $config[{str_replace('.','][',$item)}];
}
答案 2 :(得分:0)
在get_config函数中,您可以使用php
中的explode函数解析字符串function get_config($data){
$pieces = explode(".", $data);
return $config[$pieces[0]][$pieces[1]];
}