PHP:当与函数内的global关键字一起使用时,全局变量不会按预期工作

时间:2014-08-04 20:53:56

标签: php global-variables

我正在学习PHP,我开始研究全局变量概念。我不太明白为什么这个变量会得到一个未定义的变量"错误。

function function1() {
    global $totalGeneral;
    $totalGeneral = 42;
}

function function2(){
    echo $totalGeneral;
}

我预计42会被打印出来。相反,我得到:

  

注意:未定义的变量:totalGeneral

阅读variable scope at the PHP manual,我认为添加"全球"足以使变量成为全局变量。

2 个答案:

答案 0 :(得分:2)

您忘记将全局包含在第二个功能中。没有它,它永远不会在范围内。

仅仅因为您使用global关键字并不意味着规则不适用。全局变量总是在函数内部超出范围,除非您使用global关键字(或将其作为参数传递,或者在闭包的情况下使用use关键字)。

function function1() {
    global $totalGeneral;
    $totalGeneral = 42;
}

function function2(){
    global $totalGeneral;
    echo $totalGeneral;
}

答案 1 :(得分:2)

您还需要在function2()中使变量成为全局变量。

同样全局指令只是说php要从全局变量中获取变量,所以你需要先声明你的变量,所以:

$totalGeneral = 69;

function function1() {
    global $totalGeneral;
    $totalGeneral = 42;
}

function function2(){
    global $totalGeneral;
    echo $totalGeneral;
}