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


How to create a function to return variables in php

我想创建一个函数,通过它我可以获取变量。

例如

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

编辑:我也为您的代码创建了代码板,请在此处检查。