在php函数中同时使用所有全局变量


use all global variables at once in php function

我有一个php脚本,其中包含大约50个全局变量。我有大约18个函数需要全局变量。

在大多数函数中,我需要将近40个全局变量。我现在将它们包括为:

      function example1() {
      global $1, $2, $3, ..... $40;
      }
      function example2() {
      global $1, $2, $3, ..... $40;
      }

有更简单的方法吗?

例如,是否同时包含所有全局变量?

可能在一个数组中?

我希望能听到一些好的建议!

PHP有一个提取函数,它可以使用数组中的所有元素的键将其转换为变量,也就是说,由于$GLOBALS var包含所有全局变量,因此只需在函数中提取即可。

$name = 'John Doe';
function myFunction(){
  extract($GLOBALS);
  echo $name;
}

我把很多变量交给了global。我现在明白了,我必须在&到for each循环直接修改数组中的数据,而不是声明它们并尝试将它们移交给全局变量。。

为了能够直接修改循环中$value前面带有&的数组元素;。在这种情况下,该值将通过引用进行分配。

      <?php
      $arr = array(1, 2, 3, 4);
      foreach ($arr as &$value) {
          $value = $value * 2;
      }
      // $arr is now array(2, 4, 6, 8)
      unset($value); // break the reference with the last element
      ?>

谢谢你的帮助!我可以删除很多代码和变量。。。

您可以简单地包括所有全局变量。

function myFunc() {
  foreach ($GLOBALS as $n => $v) {
     global $$n;
  }
  ... code using any global variable
}

或者,您可以包含自己预定义的子集。

$myGlobals = array('n1','n2');
function myFunc() {
  foreach ($GLOBALS['myGlobals'] as $n) {
     global $$n;
  }
  ... code using any global variable named in $myGlobals
}