Chr*_*ier 38 php variables global function
我试图在函数内更改函数之外的变量.因为如果函数检查的日期超过一定数量,我需要它来更改代码开头的日期年份.
$var = "01-01-10";
function checkdate(){
if("Condition"){
$var = "01-01-11";
}
}
Run Code Online (Sandbox Code Playgroud)
Ali*_*aru 52
A.使用global关键字从应用程序范围导入.
$var = "01-01-10";
function checkdate(){
global $var;
if("Condition"){
$var = "01-01-11";
}
}
checkdate();
Run Code Online (Sandbox Code Playgroud)
B.使用$ GLOBALS数组.
$var = "01-01-10";
function checkdate(){
if("Condition"){
$GLOBALS['var'] = "01-01-11";
}
}
checkdate();
Run Code Online (Sandbox Code Playgroud)
C. 通过引用传递变量.
$var = "01-01-10";
function checkdate(&$funcVar){
if("Condition"){
$funcVar = "01-01-11";
}
}
checkdate($var);
Run Code Online (Sandbox Code Playgroud)
Bug*_*ill 44
只需使用如下global关键字:
$var = "01-01-10";
function checkdate(){
global $var;
if("Condition"){
$var = "01-01-11";
}
}
Run Code Online (Sandbox Code Playgroud)
那么对该变量的任何引用都将是全局变量.
这里的所有答案都很好,但是......你确定要这样做吗?
从函数内部更改全局变量通常是一个坏主意,因为它很容易导致意大利面条代码发生,其中变量在整个系统中被更改,函数彼此相互依赖等等.这是一个真正的混乱.
请允许我建议一些替代方案:
1)面向对象的编程
2)让函数返回一个由调用者分配的值.
例如$ var = checkdate();
3)将值存储在通过引用传递给函数的数组中
function checkdate(&$ values){if(condition){$ values ["date"] ="01-01-11"; }}
希望这可以帮助.
试试这个传递参考
$var = "01-01-10";
function checkdate(&$funcVar){
if("Condition"){
$funcVar = "01-01-11";
}
}
checkdate($var);
Run Code Online (Sandbox Code Playgroud)
或尝试与上述相同,保持功能相同.
$var = "01-01-10";
function checkdate($funcVar){
if("Condition"){
$funcVar = "01-01-11";
}
}
checkdate(&$var);
Run Code Online (Sandbox Code Playgroud)