PHP代码中未直接修改$a,为何其值会自动增加?
为什么变量$a的值会增加?
核心原因是函数参数用了引用传递——在PHP里,函数参数前加&符号,就表示传递的不是变量的值拷贝,而是变量本身的内存引用。
具体到你的代码:
- 函数
doSomething( &$arg )的参数$arg带了&,意味着当你把$a传入函数时,$arg并不是$a的副本,而是直接指向$a在内存中的存储位置。 - 函数内部执行
$arg += 1时,本质就是直接修改了$a对应的内存数据,所以外部的$a值会跟着变成4。 - 而
$return = $arg是在$arg自增前赋值的,所以返回的是最初的3,这也是$b=3的原因。
内容的提问来源于stack exchange,提问作者xmr6204
相关产品推荐
相关产品推荐

