我想弄清楚如何我可以使用一个变量,已被设置在一个函数之外,里面。有没有办法做到这一点?我试图将变量设置为“全局”,但似乎没有按预期工作。从外部获取变量,里面的功能在PHP
我的代码
$var = '1';
function() {
$var + 1;
return $var;
}
我想一个简单的例子,来回报2
我想弄清楚如何我可以使用一个变量,已被设置在一个函数之外,里面。有没有办法做到这一点?我试图将变量设置为“全局”,但似乎没有按预期工作。从外部获取变量,里面的功能在PHP
我的代码
$var = '1';
function() {
$var + 1;
return $var;
}
我想一个简单的例子,来回报2
你需要使用global关键字内你的函数值。 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?
}
'$ var ='1'; function(){ global $ var; $ var + 1; return $ var; }' –
Bah,这太简单了!无论如何,非常感谢您的快速回复!队友的欢呼声! – Henrikz
通常不建议使用全局,但不要超过绝对必要 – 2011-02-20 22:24:02
<?php
$var = '1';
function x ($var) {
return $var + 1;
}
echo x($var); //2
?>
值存储失败。 –
$var = 1;
function() {
global $var;
$var += 1;
return $var;
}
OR
$var = 1;
function() {
$GLOBALS['var'] += 1;
return $GLOBALS['var'];
}
有关文档,请参阅http://php.net/manual/en/language.variables.scope.php。我想在你的具体情况下,你没有得到你想要的结果,因为你没有将$var + 1
操作分配给任何东西。数学是基本完成的,然后被扔掉。请参阅下面的工作示例:
$var = '1';
function addOne() {
global $var;
$var = $var + 1;
return $var;
}
这条线的功能: $var + 1
不会改变分配给$var
的价值,即使你使用global关键字。
这些要么将工作,但是: $var = $var + 1;
或 $var += 1;
既然你没有回答这个问题,我认为这将作为评论更有意义。不过,这是正确的。 – devios1
全局会做的伎俩,但总体上是好的要远离。在较大的程序中,您无法确定是否存在行为,因为它们可以在整个程序中的任何地方进行更改。测试使用全局变量的代码变得非常困难。
另一种方法是使用一个类。
class Counter {
private $var = 1;
public function increment() {
$this->var++;
return $this->var;
}
}
$counter = new Counter();
$newvalue = $counter->increment();
+1是一种比全局状态更好的解决方案,但是也可能需要为$ var的getter来处理某些人只需要当前值而不增加它的情况 – GordonM
$var = '1';
function addOne() use($var) {
return $var + 1;
}
从'我想这样,返回的2.'我建议做'$ VAR =函数($ VAR){$回报VAR + 1的值; }'。这样,你可以避免使用全局变量,这是一个糟糕的设计模式。 –