全局变量PHP未得到更新
在我的代码中:全局变量PHP未得到更新,php,Php,在我的代码中: <?php $var1 = 0; //I want `$var1` to retain its value in all functions `abc()` and `xyz()` abc(); function abc() { global $var1; $varDatabase = 10; //a value from database $var1 = &$varDatabase; //$var1 set as reference
<?php
$var1 = 0; //I want `$var1` to retain its value in all functions `abc()` and `xyz()`
abc();
function abc()
{
global $var1;
$varDatabase = 10; //a value from database
$var1 = &$varDatabase; //$var1 set as reference
xyz(); //$var1 is changed in xyz() function
echo $var1; //I expect value 110 here but it return last value 10
}
function xyz()
{
global $var1;
$var1 = $var1 + 100;
}
?>
我的变量$var1
被设置为指向另一个变量$varDatabase
的指针/引用$var1
在函数xyz()
中更新,我希望在执行xyz()
后调用函数时会更新它的新值。这就是为什么我将$var1
设置为global
,但在执行xyz()
后,它仍然没有给我更新的值
我只想
$var1
在所有函数中保留它的值abc()
和xyz()
全局变量通过使变量引用相应的$GLOBALS
元素来实现,即
global $var1;
相当于
$var1 = &GLOBALS['var1'];
但如果您随后将其重新定义为对其他变量的引用,则它不再是对$GLOBALS
元素的引用,因此它不再是全局变量
请参阅文档
如果希望$var1
保留其值,请将其设置为全局变量,但不要将其设置为对$varDatabase
的引用。照办
$var1 = $varDatabase;
您不需要函数外部的
global
语句。ok。但我仍然需要更新的值。我怎么得到它?我知道你想要什么,问题很清楚。如果我知道答案,我会发布它。我想你引用的是一个局部变量$varDatabase
,所以$var1
也变成了局部作用域正确的答案是告诉OP他可以将变量作为函数参数传递,这样他就可以停止使用globals了这是一个很好的注释,但这不是答案。全局变量有适当的用途。我知道,我可以传递变量,但在10多个函数中,有20个变量在不同的代码点设置了不同的值,因此,更改所有函数会造成很大的混乱。删除“&”后,代码工作正常。谢谢有时,最好是快速修复,而不是寻求完美的解决方案,因为项目中有时间限制。@user2891329如果有这么多参数,可以将它们放入数组或类中,而不是许多不同的变量。