Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数中的PHP变量范围_Php_Function_Variables_Scope - Fatal编程技术网

函数中的PHP变量范围

函数中的PHP变量范围,php,function,variables,scope,Php,Function,Variables,Scope,我希望test(setVar())的输出为“Value 2”,但在setVar()中不返回$var。这可能吗?不要使用global从不使用全局。请改用引用: $var = "Value 1"; function setVar() { global $var; $var = "Value 2"; } function test($someVar) { echo $someVar; } test($var); setVar不返回任何内容,因此您没有向test函数传

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

不要使用
global
从不使用
全局
。请改用引用:

$var = "Value 1";

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

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

test($var);

setVar
不返回任何内容,因此您没有向
test
函数传递任何内容。如果您想在
test
函数中打印
$var
,为什么不打印它而不是
$someVar
?如果
setVar
没有返回任何内容,那么与
test
有什么关系?好的,那么我该如何编写它以使setVar返回$var?问题是,在我的“正确”代码中(这太复杂了,无法放在这里),setVar()返回其他内容,我只需要setVar函数外部可用的$var值,这样我就可以将它作为参数传递给test()。很抱歉这么愚蠢,但我一整天都在这么做:(无论你想做什么,你都需要重新构造。函数是简单的输入输出设备,有一些模式可以使用。不可能说你实际上要解决什么问题以及如何最好地解决它,但你在这里要做的不是它。好的,我稍微修改了代码,以便测试()现在使用参数$var而不是setVar执行,因为我意识到这很愚蠢,因为它没有返回任何东西(感谢您指出这一点)。我如何将$var to=“Value 2”,置于setVar函数之外?感谢大家的帮助,并为自己的愚蠢感到抱歉?
$var = "Value 1";

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

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

setVar($var);

test($var);