为什么不能在函数中调用全局变量?

时间:2019-06-27 20:45:45

标签: php

我有一个全局变量,但是不能在函数中调用它。

我尝试在函数中定义变量并将其修复,但是我需要将该变量设置为全局变量,以便可以在其他函数中调用它。我尝试在变量名称前使用“全局”,但这也不起作用。


$randBoolean = FALSE;

function someFunction(){
       if(!$randBoolean){
       lineBreak();
       $randBoolean = TRUE;
       }
}

someFunction();

我在另一个php文档中使用了全局变量,并且效果很好。我不确定是否是因为此全局变量是否为布尔值。

2 个答案:

答案 0 :(得分:0)

您必须在函数内部将变量声明为global

$randBoolean = FALSE;

function someFunction(){
    global $randBoolean;

    if(!$randBoolean){
        //lineBreak();
        $randBoolean = TRUE;
    }
}
echo $randBoolean ? 'TRUE' : 'FALSE' ;
someFunction();
echo $randBoolean ? 'TRUE' : 'FALSE';

结果

FALSE
TRUE

当然,出于多种原因,您应该避免使用全局变量,因此最好将变量作为参数传递给函数,在这种情况下,通过引用传递变量,以便函数可以修改其值。

$randBoolean = FALSE;

function someFunction(&$param){

    if(!$param){
        //lineBreak();
        $param= TRUE;
    }
}
echo $randBoolean ? 'TRUE' : 'FALSE' ;
someFunction($randBoolean);
echo $randBoolean ? 'TRUE' : 'FALSE';

结果

FALSE
TRUE

答案 1 :(得分:0)

您是否错过了$ randBoolean之前的“全局”。检查$ GLOBALS数组。如果您的变量有引用,您做对了。

相关问题