在PHP中,从函数的外部和内部获取变量
我试图弄清楚如何使用在函数外部、函数内部设置的变量。有没有办法做到这一点?我尝试将变量设置为“全局”,但结果似乎没有达到预期效果 我的代码的一个简单示例在PHP中,从函数的外部和内部获取变量,php,function,variables,global-variables,Php,Function,Variables,Global Variables,我试图弄清楚如何使用在函数外部、函数内部设置的变量。有没有办法做到这一点?我尝试将变量设置为“全局”,但结果似乎没有达到预期效果 我的代码的一个简单示例 $var = '1'; function() { $var + 1; return $var; } 我希望它返回值2。您需要在函数中使用全局关键字。 编辑(由于评论,我忽略了这一点) …并将结果存储在某个地方 $var = '1'; function() { global $var; $var += 1;
$var = '1';
function() {
$var + 1;
return $var;
}
我希望它返回值2。您需要在函数中使用全局关键字。 编辑(由于评论,我忽略了这一点) …并将结果存储在某个地方
$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
操作分配给任何对象。基本上,数学是先完成,然后扔掉的。请参见下面的工作示例:
$var = '1';
function addOne() {
global $var;
$var = $var + 1;
return $var;
}
函数中的这一行:
$var+1
即使使用全局关键字,也不会更改分配给$var
的值
但是,这两种方法中的任何一种都会起作用:
$var=$var+1代码>
或
$var+=1代码>全球玩家可以做到这一点,但通常最好远离他们。在较大的程序中,您无法确定这些行为,因为它们可以在整个程序中的任何地方更改。测试使用全局变量的代码变得非常困难
另一种方法是使用类
class Counter {
private $var = 1;
public function increment() {
$this->var++;
return $this->var;
}
}
$counter = new Counter();
$newvalue = $counter->increment();
根据:最好把
$var = '1';
function($var) {
$var + 1;
return $var;
}
如果我弄错了,请更正。$var='1';function(){global$var;$var+1;return$var;}
Bah,太简单了!无论如何,非常感谢您的快速回复!干杯,伙计!通常不建议使用global,除非绝对必要,甚至通过global
,语句$var+1提供访问代码>计算结果为2
,但不将结果存储在任何位置。试试$var++代码>或$var+=1代码>,但请注意,它也会更改原始变量。因为您没有回答这个问题,我认为这作为一个注释会更有意义。尽管如此,这是正确的。我希望从返回2的值。
我建议执行$var=function($var){return$var+1;}
。这样,您就可以避免使用全局变量,这是一个糟糕的设计模式。+1是一个比全局状态好得多的解决方案,但对于某些人只需要当前值而不需要增加当前值的情况,也可能需要$var的getter
$var = '1';
function addOne() {
global $var;
$var = $var + 1;
return $var;
}
class Counter {
private $var = 1;
public function increment() {
$this->var++;
return $this->var;
}
}
$counter = new Counter();
$newvalue = $counter->increment();
$var = '1';
function addOne() use($var) {
return $var + 1;
}
$var = '1';
function($var) {
$var + 1;
return $var;
}