如何在php中创建一个返回变量的函数

时间:2016-01-22 08:14:48

标签: php arrays function loops

我想创建一个函数来获取变量..

例如

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

实际我想要函数中的全局变量,但是我有很多全局变量,每当我创建函数时,我必须在函数中编写每个全局变量。

所以,如果有任何其他好的方法,请告诉我..

2 个答案:

答案 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