<?php
function sum($y) {
$y = $y + 5;
}
$x = 5;
sum($x);
echo $x;
?>
我有这段代码。问题是:它输出什么?答案是:5。如何使它输出10?答案是:sum(&$x)。
问题是我不明白为什么第一个问题的答案是5。当您使用sum($x)时,它难道不应该将函数替换为$x,因此$x = 5 + 5 = 10吗?为什么答案是5?有人向我解释了与指针和地址相关的内容,但我没有理解。我从未理解过指针的概念,我在Google上搜索了一下,显然php中没有指针,所以我非常困惑。我的朋友说,变量由一个值和该值的内存地址组成。请有人用我五岁小孩子的语言告诉我为什么答案是5而不是10?谢谢。
$x+5
的值并没有被放回到$x
中,而是被放入了$y
中,而$y
只存在于sum($y)
函数的范围内。 - x13$y
的$x
的“副本”,并在sum($y)
函数中使用。此时,$x
和$y
除了(巧合地)具有相同的值之外没有任何关联。$y
增加了5,但是$x
在任何地方都没有被提及。如果你将$y
放在参数列表中,如sum(&$y)
,它不会创建一个新的副本,而是引用了$x
。这就像把某人的电话号码写在便利贴上,和在便利贴上写上你可以找到他们电话号码的地方之间的区别。 - x13