我知道这是一个简单的例子,并且知道为什么返回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?
$a++
为后增量返回$a
的旧值,而不是增加后的值。
但++$a
是预递增的,$a
的值是递增的,并返回新的值。
在本例中,如果使用$a = 1
而使用$a++
,它将返回1
,而如果使用++$a
,它将返回2
当$a
初始值为1
时,函数中的后增运算符告诉PHP返回1
,然后将$a
递增到2
....因此,分配给$b
的返回值为1;by-reference确保增加的$a
是它在全局作用域中的新值。
然后将$a
(现在是2
)与$b
(1
)连接在一起,给出21