代码之家  ›  专栏  ›  技术社区  ›  Darren

我的号码不够好吗?

php
  •  1
  • Darren  · 技术社区  · 11 年前

    请原谅这个迟到的标题。

    这个问题与 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 回复  |  直到 11 年前
        1
  •  3
  •   Tom Fenech    11 年前

    我要试试。。。

    在第二个示例中:

    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 ,我认为这是一个有用的提醒,你只是在 同一句话中的东西和其他任何东西都是不相关的。

    推荐文章