可以在 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;
}
请参阅使用关键字。