全局变量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如果有这么多参数,可以将它们放入数组或类中,而不是许多不同的变量。