【问题标题】:How to create a function to return variables in php如何在php中创建一个返回变量的函数
【发布时间】:2016-01-22 08:14:48
【问题描述】:

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

例如

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

实际上我想要函数中的全局变量,但是我没有大量的全局变量,并且每次创建函数时我都必须在函数中写入每个全局变量。

所以如果有任何其他好的方法可以做到这一点,请告诉我..

【问题讨论】:

  • 这是不可能的。一个函数只能返回一个变量,要操作多个变量,必须使用 global 关键字。
  • 您可以将所有函数和变量放在一个类中,然后您可以将它们引用为$this->site_name

标签: php arrays function loops


【解决方案1】:

您可以使用extract()

$var = array("site_name" => "site_value", "site_des" => "site_value2");
extract($var);

echo $site_name; // outputs: site_value

请务必查看文档中的 flags 部分,了解如何处理覆盖局部变量或为数组中的键添加前缀。

一个小例子。由于您的 $var 可能出现在任何地方,并且基本上会更改我们的全局或本地变量,从而使您的代码不安全,因此您可以例如确保仅提取已知变量 EXTR_IF_EXISTS 或者您可以选择为所有变量添加前缀:

extract($var, EXTR_PREFIX_ALL, "ext");
echo $ext_site_name;

【讨论】:

    【解决方案2】:

    如果我没看错,你想使用 $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

    【讨论】:

    • 亲爱的反对者,请澄清为什么反对。如果您解释我的错误,我可以做出更好的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    • 2016-10-12
    • 2021-12-13
    相关资源
    最近更新 更多