请原谅迟来的标题
这个问题与variable by reference
有关。
假设我们有一个像这样的for
循环:
for($i = 0; $i < 5; $i++) {
$r = 15;
$t = &$i + $r;
array_push($a, $t);
}
预期输出:Array
(
[0] => 15
[1] => 16
[2] => 17
[3] => 18
[4] => 19
)
返回输出:Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
)
但是如果我有这样的东西:
for($i = 0; $i < 5; $i++) {
$r = 15;
$num = &$i;
$t = $num + $r;
array_push($a, $t);
}
它返回与上述完全相同的预期结果。
有人能解释一下吗
我试一试…
在第二个例子中:
for($i = 0; $i < 5; $i++) {
$r = 15;
$num = &$i; // now $num and $i are the same thing - perfectly legitimate
$t = $num + $r; // equivalent to $t = $i + $r
array_push($a, $t);
}
而在第一个例子中:
for($i = 0; $i < 5; $i++) {
$r = 15;
$t = &$i + $r; // $t and $i are the same thing. $r is not involved
$t = &$i * "anything you want"; // this does exactly the same thing
array_push($a, $t);
}
请注意,在文档中,这些类型的赋值写得像$t =& $i
,我认为这是一个有用的提醒,您只是在两个之间创建一个别名,而同一语句中的任何其他内容都是不相关的。