我需要帮助理解这个PHP代码示例:PHP函数的返回值意外
$bar = "outside";
function foo($bar) {
$bar = "inside";
return $bar;
}
$bar = foo($bar);
echo $bar
我预测$栏将回声“外”,但回应的“内部”,我不明白为什么。 $ bar最初具有“外部”(定义为全局)值。然后函数foo被调用(在它被定义之后),并且接受一个参数,这也恰好被称为$ bar。 $ bar的值为“outside”,所以值“outside”被传递给foo。然后我们有语句$ bar =“inside”,这对我来说没有意义,因为它似乎意味着“outside”=“inside”,以及如何将字符串分配给另一个字符串?然后函数返回$ bar,我认为它应该具有“outside”值,因为这是传递给foo的值。它如何获得“内部”的价值,我无法弄清楚。
编辑:我的问题不是关于变量的范围。我想知道的是为什么参数值没有被传递给第3行的函数,给出了无意义的语句“outside”=“inside”。根据我得到的答案,我只能假设这是因为这样的声明在PHP(可能是所有其他语言)中是非法的,所以解释器根本不会这样做(尽管解释器的正常行为是将函数体中出现的参数替换掉)。
谢谢
这是(举例)说明如下:[可变范围](HTTP:// PHP。 net/manual/en/language.variables.scope.php) - 你需要先理解它才能使用它,这是跨越许多计算机语言的一个非常基本的原则。 – hakre
你应该更清楚你需要什么功能。 –
@hakre:我的问题不需要处理变量作用域。我理解范围足以处理这个问题。如果我的困惑正在出现,那么为什么参数值“outside”不会替代第3行上的局部变量$ bar,这种参数值通常被替换的方式。换句话说,我似乎偶然发现一个参数值没有传入函数的情况。 – Bill