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

问题描述 投票:0回答:8

我正在尝试弄清楚如何在函数内部使用已在函数外部设置的变量。有什么办法吗?我试图将变量设置为“全局”,但它似乎没有按预期工作。

我的代码的一个简单示例

$var = '1';

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

我希望它返回 2 的值。

php function variables global-variables
8个回答
67
投票

技术上你需要使用全局关键字inside你的函数并将结果存储在某处。

$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?
}

但是你真的不应该使用这种方法。请参阅为什么全局变量是邪恶的。相反,传递一个变量作为参数:

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

16
投票

Globals 可以解决问题,但通常最好远离。在较大的程序中,您无法确定那里的行为,因为它们可以在整个程序的任何地方更改。测试使用全局变量的代码变得非常困难。

另一种方法是使用类。

class Counter {
    private $var = 1;

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

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

6
投票
$var = 1;

function() {
  global $var;

  $var += 1;
  return $var;
}

$var = 1;

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

3
投票

函数中的这一行:

$var + 1
不会改变分配给
$var
的值,即使你使用全局关键字。

这些都可以,但是:

$var = $var + 1;
或者
$var += 1;


2
投票

有关文档,请参阅http://php.net/manual/en/language.variables.scope.php。我认为在你的具体情况下你没有得到你想要的结果,因为你没有将

$var + 1
操作分配给任何东西。从本质上讲,数学是执行的,然后被扔掉了。请参阅下面的工作示例:

$var = '1';

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

2
投票
$var = '1';
function addOne() use($var) {
   return $var + 1;
}

-1
投票
<?php
$var = '1';
function x ($var) {
return $var + 1;
}
echo x($var); //2
?>

-1
投票

根据:https://riptutorial.com/php/example/2496/global-variable-best-practices 最好放

$var = '1';

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

如果我说错了请纠正我。

© www.soinside.com 2019 - 2024. All rights reserved.