【问题标题】:PHP Variable scope within function [duplicate]函数内的PHP变量范围[重复]
【发布时间】:2014-01-25 18:46:13
【问题描述】:
$var = "Value 1";

function setVar() {
    global $var;
    $var = "Value 2";
} 

function test($someVar) {
    echo $someVar;
} 

test($var);

我希望 test(setVar()) 的输出为“Value 2”,但在 setVar() 中不返回 $var。这可能吗?

【问题讨论】:

  • setVar 不返回任何内容,因此您没有将任何内容传递给 test 函数。如果你想在test函数中打印$var,为什么不打印它而不是$someVar
  • 如果setVar没有返回任何东西,那么与test有什么关系?
  • 好的,那么我将如何编写它以便 setVar 确实返回 $var?问题是,在我的“正确”代码中(放在这里太复杂了) setVar() 返回别的东西,我只需要在我的 setVar 函数之外可用的 $var 的值,这样我就可以将它作为参数传递给测试()。抱歉这么愚蠢,但我整天都被困在这上面:(
  • 你需要重组你想要做的任何事情。函数是简单的输入输出设备,并且有一些模式可以使用它。很难说你真正想解决什么问题以及如何最好地解决它,但你在这里尝试做的不是它。
  • 好的,我稍微更改了代码,以便 test() 现在使用参数 $var 而不是 setVar 执行,因为我意识到这很愚蠢,因为它没有返回任何内容(感谢您指出这一点)。 如何在 setVar 函数之外将 $var 设为 = "Value 2"? 感谢各位的帮助,抱歉我很愚蠢?

标签: php function variables scope


【解决方案1】:

不要使用global从不使用global。请改用参考:

$var = "Value 1";

function setVar(&$x)
{
    $x = "Value 2";
}

function test($y)
{
    echo $y;
}

setVar($var);

test($var);

【讨论】:

    猜你喜欢
    • 2016-10-26
    • 2014-11-10
    • 2023-03-20
    • 2021-12-30
    • 2013-09-27
    • 2012-06-06
    • 2017-08-09
    • 2020-09-25
    • 1970-01-01
    相关资源
    最近更新 更多