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

y0u0uwnf  于 2023-05-16  发布在  PHP
关注(0)|答案(5)|浏览(100)

我想弄清楚如何使用一个在函数外部设置的变量,在函数内部。有什么办法可以做到吗?我尝试将变量设置为“global”,但似乎没有按预期进行。
我的代码的一个简单例子

$var = '1';

function() {
    $var + 1;
    return $var;
}

我希望它返回值2。

bxjv4tth

bxjv4tth1#

  • 从技术上讲 * global关键字在函数内部使用,而不是外部。

但你真的不应该使用这种方法。参见Why global variables are evil。相反,将变量作为参数传递:

function($param) {
    $param += 1;
    return $param;
}
$var = 1;
$var = function($var); // get your value of 2
jjjwad0x

jjjwad0x2#

全球性的会做的伎俩,但一般是好远离。在较大的程序中,你不能确定它们的行为,因为它们可以在整个程序的任何地方被改变。测试使用全局变量的代码变得非常困难。
另一种方法是使用类。

class Counter {
    private $var = 1;

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

$counter = new Counter();
$newvalue = $counter->increment();
mfpqipee

mfpqipee3#

$var = 1;

function() {
  global $var;

  $var += 1;
  return $var;
}

$var = 1;

function() {
  $GLOBALS['var'] += 1;
  return $GLOBALS['var'];
}
kjthegm6

kjthegm64#

函数中的这一行:$var + 1不会更改分配给$var的值,即使您使用global关键字。
但是,这两种方法都可以工作:$var = $var + 1;$var += 1;

qzlgjiam

qzlgjiam5#

有关文档,请参见http://php.net/manual/en/language.variables.scope.php。我认为在您的特定情况下,您没有得到想要的结果,因为您没有将$var + 1操作分配给任何东西。基本上,数学是执行的,然后被扔掉。下面是一个工作示例:

$var = '1';

function addOne() {
   global $var;
   $var = $var + 1;
   return $var;
}

相关问题