<?php
function sum($y) {
$y = $y + 5;
}
$x = 5;
sum($x);
echo $x;
?>
所以我有这个代码。问题是:它输出了什么?答案:5.我怎样才能输出10?答案:总和(& $ x)。通过引用传递与值传递
问题是我不明白为什么第一个问题的答案是5.当你做sum($ x)时,它不应该用$ x代替函数,所以$ x = 5 + 5 = 10?为什么答案是5?我真的不明白。有人向我解释了一些与指针和地址有关的东西,但我不明白。我从来没有理解指针的概念,我GOOGLE了它,显然在PHP中没有指针,所以我超级困惑。我的朋友说,一个变量是由一个值和内存地址组成的。有人能像我5岁那样解释我为什么答案是5而不是10?请
的'价值$ X + 5'不放回'$ x'而是转换成'$ y',它只存在于'sum($ y)'函数的范围内。 – x13
但为什么会发生?我知道我的问题真的很愚蠢。我的意思是,sum($ x)不是$ x = $ x + 5?为什么它回到$ y?总和($ x)是否意味着用$ x替换$ y? –
默认情况下,它会创建'sum'($ y)'函数中使用的名为'$ y'的'$ x'的'重复',此时'$ x'和'$ y'除了巧合)他们的价值。 '$ y'增加了5,但'$ x'在任何地方都没有提及。如果你把'$ y'作为'sum(&$ y)'放在参数列表中,它不会创建一个新的重复,而是引用'$ x'。这是在用户的电话号码上写下某个人的电话号码和写在邮箱上的区别,你可以找到他们的电话号码。 – x13