我知道这是一个简单的例子,并知道为什么返回21,但不明白为什么它以这种方式工作php:
function increase(&$a) {
return $a++; // now i expect $a = 2, but return FIRST the reference (1), an increase later..?
}
$a = 1;
$b = increase($a);
echo $a.$b;
运营商和byRef的特殊行为?
答案 0 :(得分:3)
当$a
最初为1
时,函数中的后增量运算符告诉PHP返回1
,然后将$a
增加到2
。 ...所以分配给$b
的返回值是1;并且by-reference确保递增的$a
是其在全局范围内的新值。
然后,您在$a
(2
)$b
21
后增加) >
答案 1 :(得分:3)
$a++
是后增量
返回$a
的旧值,而不是递增值。
但是如果++$a
是预增量,则$a
的值会递增,并返回新值。
因此,在这种情况下,如果$a = 1
而您$a++
,则会返回1
,而如果您使用++$a
,则会返回2
。< / p>