代码之家  ›  专栏  ›  技术社区  ›  Kristoffer Sall-Storgaard ProllyGeek

PHP引用,奇怪的现象,有人能解释吗?

  •  1
  • Kristoffer Sall-Storgaard ProllyGeek  · 技术社区  · 14 年前

    PHP,5.3非线程安全窗口,在linux上的PHP 5.2.9上也得到了验证。

    示例代码:

    $test1 = array(
                array("val"=>"a"),
                array("val"=>"b"),
                array("val"=>"c")
              );
    
    
    foreach($test1 as $key => $test)
    {
        echo $test['val'] . "\n";
    }
    foreach($test1 as $key => &$test)
    {
        echo $test['val'] . "\n";
    }
    foreach($test1 as $key => $test)
    {
        echo $test['val'] . "\n";
    }
    

    a
    b
    c
    a
    b
    c
    a
    b
    b
    

    预期产量:

    a
    b
    c
    a
    b
    c
    a
    b
    c
    

    reset 什么也没做。然后我认为引用以某种方式改变了值,但是不,如果我用 &test 然而,在使用引用的第一个循环之后,没有引用的任何循环都将更改最后一个值。。。。这让我完全不知所措。有人能给我解释一下吗?

    1 回复  |  直到 14 年前
        1
  •  4
  •   Mark Baker    14 年前

    如果按引用循环,则取消设置($test),否则引用仍然存在。

    foreach($test1 as $key => &$test) 
    { 
        echo $test['val'] . "\n"; 
    } 
    unset($test);
    

    well documented

    警告