我正在尝试弄清楚如何在函数内部使用已在函数外部设置的变量。有什么办法吗?我试图将变量设置为“全局”,但它似乎没有按预期工作。
我的代码的一个简单示例
$var = '1';
function() {
$var + 1;
return $var;
}
我希望它返回 2 的值。
技术上你需要使用全局关键字inside你的函数并将结果存储在某处。
$var = '1';
function() {
global $var;
$var += 1; //are you sure you want to both change the value of $var
return $var; //and return the value?
}
但是你真的不应该使用这种方法。请参阅为什么全局变量是邪恶的。相反,传递一个变量作为参数:
function($param) {
$param += 1;
return $param;
}
$var = 1;
$var = function($var);
Globals 可以解决问题,但通常最好远离。在较大的程序中,您无法确定那里的行为,因为它们可以在整个程序的任何地方更改。测试使用全局变量的代码变得非常困难。
另一种方法是使用类。
class Counter {
private $var = 1;
public function increment() {
$this->var++;
return $this->var;
}
}
$counter = new Counter();
$newvalue = $counter->increment();
$var = 1;
function() {
global $var;
$var += 1;
return $var;
}
或
$var = 1;
function() {
$GLOBALS['var'] += 1;
return $GLOBALS['var'];
}
函数中的这一行:
$var + 1
不会改变分配给$var
的值,即使你使用全局关键字。
这些都可以,但是:
$var = $var + 1;
或者
$var += 1;
有关文档,请参阅http://php.net/manual/en/language.variables.scope.php。我认为在你的具体情况下你没有得到你想要的结果,因为你没有将
$var + 1
操作分配给任何东西。从本质上讲,数学是执行的,然后被扔掉了。请参阅下面的工作示例:
$var = '1';
function addOne() {
global $var;
$var = $var + 1;
return $var;
}
$var = '1';
function addOne() use($var) {
return $var + 1;
}
<?php
$var = '1';
function x ($var) {
return $var + 1;
}
echo x($var); //2
?>
根据:https://riptutorial.com/php/example/2496/global-variable-best-practices 最好放
$var = '1';
function($var) {
$var + 1;
return $var;
}
如果我说错了请纠正我。