PHP7仍然支持全局变量



可以在 php7 中使用函数中的全局变量?它在php5.4中正常工作。

我发现关键字 global 在php7中不再有用:

全局仅接受简单的变量迁移70.兼容

但在页面上有关全球保留的内容。Variobles.globals据文章仍然写道(PHP 4,PHP 5,PHP 7)应支持全球。

不幸的是,这些对我来说什么都没有:

function printGlobal(){
  global ${$a};
  global $b;
  echo '<br/>-'.${$a};
  echo '<br/>-'.$b;
  echo '<br/>-'.$GLOBALS['c'];
}
$a = "hello";
$b = 7;
$c = 6;
printGlobal();

输出:

-
-
-

请不要开始讨论有关避免使用全局变量的讨论:)

---编辑:

我错过了,我使用的X.PHP文件包含在index.php文件中,包括hotherpage(..)。因此,X.PHP文件中定义的变量不能是全局变量 - 因为整个X.PHP文件已经在函数中。因此,上面写的代码无效。

好的,谢谢您的答复。我很愚蠢,这篇文章使我陷入困境,因为可以将全球群体停用。

php还为您提供了使用超级全球之一:$GLOBALS定义全局变量的选项。因此,您可以在下面做类似的事情,也可以在此处快速测试:

<?php
    $GLOBALS['a']      = "hello";
    $GLOBALS['b']      = 7;
    $GLOBALS['c']      = 6;
    $GLOBALS['hello']  = "Howdy...";
    function printGlobal(){
      $a = $GLOBALS['a'];
      $b = $GLOBALS['b'];
      $c = $GLOBALS['c'];
      $d = $GLOBALS[$a];
      echo '<br/>-'.$d;
      echo '<br/>-'.$b;
      echo '<br/>-'.$c;
    }
    printGlobal();

您的代码几乎很好,但是您有一个语法问题。此代码几乎与您相同,但可以使用(用PHP 7.0.12进行测试)。

<?php
function printGlobal() {
    global $a;
    global $b;
  echo '<br />-'.$a; //Echoes $a
  echo '<br />-'.$b; //Echoes $b
  echo '<br />-'.$GLOBALS['c']; //Echoes $c from from the array $GLOBALS
}
$a = 1;
$b = 2;
$c = 3;
printGlobal();

您可以看到,在printGlobal中,我刚刚指定我使用$ a和$ b作为全局,在回声中,我使用$ a代替$ {a}双引号字符串,在这里您都在任何报价外。

请参阅$ GLOBALS,称无需使用global $variable,因为$ Globals无处不在。

输出:

<br/>-1<br/>-2<br />-3

请注意,您应该使用 n在新行上写入。

编辑:请注意,在匿名函数中,可以使用use键作品,因此您可以使用它在功能范围中带来变量。

<?php
$message = "Hello world!";
$ex = function() use ($message) {
    echo $message;
}

请参阅使用关键字。

相关内容

  • 没有找到相关文章

最新更新