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

时间:2011-02-20 22:19:34

标签: php function variables global-variables

我正在试图弄清楚如何使用一个已在函数外部设置的变量。有没有办法做到这一点?我已经尝试将变量设置为“全局”,但它似乎没有达到预期效果。

我的代码的一个简单示例

$var = '1';

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

我想要这个,返回2的值。

8 个答案:

答案 0 :(得分:53)

您需要在函数中使用全局关键字 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?
}

答案 1 :(得分:10)

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

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

class Counter {
    private $var = 1;

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

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

答案 2 :(得分:5)

$var = 1;

function() {
  global $var;

  $var += 1;
  return $var;
}

OR

$var = 1;

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

答案 3 :(得分:3)

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

$var = '1';

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

答案 4 :(得分:3)

你的功能中的这一行: $var + 1 即使您使用全局关键字,也不会更改分配给$var的值。

其中任何一个都可行,但是: $var = $var + 1; 要么 $var += 1;

答案 5 :(得分:3)

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

答案 6 :(得分:0)

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

$var = '1';

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

如果我错了,请纠正我。

答案 7 :(得分:-1)

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