如何在不使用全局变量的情况下影响函数外部的变量


How to affect a variable outside of a function without using globals

需要一些代码示例来说明如何在不使用全局变量的情况下影响函数外部的变量。我也想知道我应该在哪里使用全局,在哪里不使用。

提前谢谢。

在不使用全局变量的情况下影响另一个作用域中的变量的唯一方法是使用引用。您可以定义一个函数,该函数通过引用获取其参数,方法是在参数前面加上 & 。例如:

function increment(&$var) {
  $var++;
}
$int = 1;
increment($int);
echo $int; // 2

在回答"我什么时候应该使用全局变量"这个问题时 - 从来没有。它们使程序流混乱并引发错误和意外行为,并且还使代码的可移植性降低,因为它依赖于另一个范围内的变量名称。

不要使用全局变量是邪恶的。

对于问题的第二部分,您可以这样做:

function test(&$param) {
    $param = 'new';
}
$test = 'old';
test($test);
echo $test; // returns 'new'
$var = 'value';
echo $var; //outputs "value"
a($var);
echo $var //outputs "new value; func a";
b('some other sutff', 'etc');
echo $var; //outputs "new value; func b";
function a(&$var2affect){
 $var2affect = 'new value; func a';
 return;
}
function b($some_var, $some_second_var){
  global $var;
  $var = 'new vaule; func b';
}

或者只是告诉我们您具体想做什么

对不起我的英语