我想创建一个函数来获取变量..
例如
$var = array("site_name" => "site_value", "site_des" => "site_value2");
foreach ($var as $key => $val){
$$key = $val;
}
echo $site_name; // print site_value
此代码有效,但当我将其插入像
这样的函数时function get_var(){
$var = array("site_name" => "site_value", "site_des" => "site_value2");
foreach ($var as $key => $val){
$$key = $val;
}
}
我想在功能链接中获取此变量
function get_other(){
get_var();
return 'hi '.$site_name; // hi site_value
}
实际我想要函数中的全局变量,但是我有很多全局变量,每当我创建函数时,我必须在函数中编写每个全局变量。
所以,如果有任何其他好的方法,请告诉我..
答案 0 :(得分:0)
您可以使用extract()
$var = array("site_name" => "site_value", "site_des" => "site_value2");
extract($var);
echo $site_name; // outputs: site_value
请务必查看文档中的标记部分,了解如何处理覆盖局部变量或为数组中的键添加前缀。
一个小例子。由于您的$var
可以来到任何地方并基本上更改我们的全局或本地变量,从而使您的代码不安全,您可以确保只提取已知变量EXTR_IF_EXISTS
或者您可以选择前缀所有变量瓦尔:
extract($var, EXTR_PREFIX_ALL, "ext");
echo $ext_site_name;
答案 1 :(得分:-1)
如果我正确地阅读你,你想使用$ GLOBALS超全局数组来设置这样的新全局变量:
function test()
{
$GLOBALS [ "test" ] = "value";
}
test();
print ( "My variable: " . $test . "\n" );
检查上面的代码at codepad。它输出My variable: value
。
您的代码可能如下所示:
function get_var(){
$var = array("site_name" => "site_value", "site_des" => "site_value2");
foreach ($var as $key => $val){
$GLOBALS[$key] = $val;
}
}
function get_other(){
get_var();
return 'hi '.$GLOBALS["site_name"]; // hi site_value
}
编辑:我也为您的代码创建了键盘,check it here。