我试图在函数内更改函数之外的变量。因为如果函数检查的日期超过一定数量,我需要它来更改代码开头的日期年份。
$var = "01-01-10";
function checkdate(){
if("Condition"){
$var = "01-01-11";
}
}
答案 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);