繁体   English   中英

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

[英]Get variables from the outside, inside a function in PHP

我试图弄清楚如何使用在函数外部、函数内部设置的变量。 有没有办法做到这一点? 我试图将变量设置为“全局”,但它似乎没有按预期工作。

我的代码的一个简单示例

$var = '1';

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

我希望它返回 2 的值。

您需要函数中使用 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?
}

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

另一种方法是使用类。

class Counter {
    private $var = 1;

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

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

function() {
  global $var;

  $var += 1;
  return $var;
}

或者

$var = 1;

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

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

$var = '1';

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

函数中的这一行: $var + 1不会更改分配给$var的值,即使您使用 global 关键字。

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

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

$var = '1';

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

如果我弄错了,请纠正我。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM