我想创建一个函数,通过它我可以获取变量。
例如
$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
}
实际上,我想要函数中的全局变量,但我有大量的全局变量,每次创建函数时都必须在函数中编写每个全局变量。
因此,如果有任何其他好方法可以做到这一点,请告诉我..
你可以使用 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;
如果我
没看错,你想使用超全局数组$GLOBALS像这样设置新的全局变量:
function test()
{
$GLOBALS [ "test" ] = "value";
}
test();
print ( "My variable: " . $test . "'n" );
在代码键盘上检查上面的代码。它输出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
}
编辑:我也为您的代码创建了代码板,请在此处检查。