我正在试图弄清楚如何使用一个已在函数外部设置的变量。有没有办法做到这一点?我已经尝试将变量设置为“全局”,但它似乎没有达到预期效果。
我的代码的一个简单示例
$var = '1';
function() {
$var + 1;
return $var;
}
我想要这个,返回2的值。
答案 0 :(得分:53)
您需要在函数中使用全局关键字 。 http://php.net/manual/en/language.variables.scope.php
编辑(尴尬我忽略了这一点,感谢评论者)
...并将结果存储在某处
$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?
}
答案 1 :(得分:10)
Globals会做到这一点,但通常很好远离。在较大的程序中,您无法确定是否存在行为,因为它们可以在整个程序中的任何位置进行更改。使用全局变量的测试代码变得非常困难。
另一种方法是使用一个类。
class Counter {
private $var = 1;
public function increment() {
$this->var++;
return $this->var;
}
}
$counter = new Counter();
$newvalue = $counter->increment();
答案 2 :(得分:5)
$var = 1;
function() {
global $var;
$var += 1;
return $var;
}
OR
$var = 1;
function() {
$GLOBALS['var'] += 1;
return $GLOBALS['var'];
}
答案 3 :(得分:3)
有关文档,请参阅http://php.net/manual/en/language.variables.scope.php。我认为在您的具体情况下,您没有得到您想要的结果,因为您没有将$var + 1
操作分配给任何内容。数学执行,然后基本上扔掉。请参阅下面的工作示例:
$var = '1';
function addOne() {
global $var;
$var = $var + 1;
return $var;
}
答案 4 :(得分:3)
你的功能中的这一行:
$var + 1
即使您使用全局关键字,也不会更改分配给$var
的值。
其中任何一个都可行,但是:
$var = $var + 1;
要么
$var += 1;
答案 5 :(得分:3)
$var = '1';
function addOne() use($var) {
return $var + 1;
}
答案 6 :(得分:0)
根据:https://riptutorial.com/php/example/2496/global-variable-best-practices最好放
$var = '1';
function($var) {
$var + 1;
return $var;
}
如果我错了,请纠正我。
答案 7 :(得分:-1)
<?php
$var = '1';
function x ($var) {
return $var + 1;
}
echo x($var); //2
?>