我的号码不够好吗?

时间:2014-07-23 08:04:58

标签: php

原谅迟到的标题。

此问题与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);
}

它会返回上面的确切预期结果。

有人可以对此有所了解。

1 个答案:

答案 0 :(得分:3)

我要去......

在第二个例子中:

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);
}

请注意in the documentation,这类作业的编写方式与$t =& $i类似,我认为这是一个有用的提示,您只需在两个之间创建别名在同一陈述中的事情和其他任何事情都是无关紧要的。