从函数PHP中更改全局变量

时间:2010-11-08 20:31:39

标签: php function variables global

我试图在函数内更改函数之外的变量。因为如果函数检查的日期超过一定数量,我需要它来更改代码开头的日期年份。

$var = "01-01-10";
function checkdate(){
     if("Condition"){
            $var = "01-01-11";
      }
}

4 个答案:

答案 0 :(得分:49)

一个。使用global关键字从应用程序范围导入。

$var = "01-01-10";
function checkdate(){
    global $var;  
    if("Condition"){
        $var = "01-01-11";
    }
}
checkdate();

B中。使用$GLOBALS数组。

$var = "01-01-10";
function checkdate(){
    if("Condition"){
        $GLOBALS['var'] = "01-01-11";
    }
}
checkdate();

℃。传递变量by reference

$var = "01-01-10";
function checkdate(&$funcVar){  
    if("Condition"){
        $funcVar = "01-01-11";
    }
}
checkdate($var);

答案 1 :(得分:44)

只需使用global关键字:

$var = "01-01-10";
function checkdate(){
     global $var;

     if("Condition"){
            $var = "01-01-11";
      }
}

对该变量的任何引用都将是全局变量。

答案 2 :(得分:8)

这里的所有答案都很好,但是......你确定要这样做吗?

从函数内部更改全局变量通常是一个坏主意,因为它很容易导致意大利面条代码发生,其中变量在整个系统中被更改,函数彼此相互依赖等等。这是一个真正的混乱。

请允许我建议一些替代方案:

1)面向对象的编程

2)让函数返回一个由调用者分配的值。

e.g。 $ var = checkdate();

3)将值存储在通过引用传递给函数的数组中

function checkdate(& $ values){    if(condition){       $ values [“date”] =“01-01-11”;    } }

希望这有帮助。

答案 3 :(得分:5)

尝试通过引用传递

  $var = "01-01-10";
    function checkdate(&$funcVar){  
        if("Condition"){
            $funcVar = "01-01-11";
        }
    }
    checkdate($var);

或尝试与上述相同,保持功能相同。

 $var = "01-01-10";
    function checkdate($funcVar){  
        if("Condition"){
            $funcVar = "01-01-11";
        }
    }
    checkdate(&$var);