在PHP中的函数内部从外部获取变量

Hen*_*ikz 29 php variables function global-variables

我试图弄清楚我如何使用一个在函数外部设置的变量.有没有办法做到这一点?我试图将变量设置为"全局"但它似乎没有按预期的那样运行.

我的代码的一个简单示例

$var = '1';

function() {
$var + 1;
return $var;
}
Run Code Online (Sandbox Code Playgroud)

我想要这个,返回值2.

Jes*_*hen 56

您需要函数中使用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?
}
Run Code Online (Sandbox Code Playgroud)

  • `$var = '1'; 函数(){ 全局 $var; $var + 1; 返回 $var; }` (2认同)
  • 通常不建议使用全局超过绝对必要的 (2认同)
  • 即使通过 `global` 提供访问,语句 `$var + 1;` 的计算结果为 `2`,但不会将结果存储在任何地方。试试 `$var++;` 或 `$var += 1;`,但请注意它也会改变原始变量。 (2认同)

Jac*_*cob 10

Globals会做到这一点,但通常很好远离.在较大的程序中,您无法确定是否存在行为,因为它们可以在整个程序中的任何位置进行更改.使用全局变量的测试代码变得非常困难.

另一种方法是使用一个类.

class Counter {
    private $var = 1;

    public function increment() {
        $this->var++;
        return $this->var;
    }
}

$counter = new Counter();
$newvalue = $counter->increment();
Run Code Online (Sandbox Code Playgroud)


Cze*_*ogy 6

$var = 1;

function() {
  global $var;

  $var += 1;
  return $var;
}
Run Code Online (Sandbox Code Playgroud)

要么

$var = 1;

function() {
  $GLOBALS['var'] += 1;
  return $GLOBALS['var'];
}
Run Code Online (Sandbox Code Playgroud)


Cha*_*eep 5

$var = '1';
function addOne() use($var) {
   return $var + 1;
}
Run Code Online (Sandbox Code Playgroud)