• foreach在引用时的陷阱


    这个陷阱在PHP里存在很久了,先看代码:

    <?php
    $array = array(1, 2, 3);

    foreach ($array as &$v) {}
    foreach ($array as  $v) {}

    print_r($array);
    ?>

    运行代码,得到的结果却是:
    Array
    (
    [0] => 1
    [1] => 2
    [2] => 2
    )可以发现,经过两次foreach后,最后一个元素由3变成了2。

    为什么会这样呢?这是因为第一次foreach的时候$v成为了一个引用变量($array[2]),如此,当第二次foreach的时候,实际上只是在对这个引用变量($array[2])进行了若干次赋值而已。

    第一次:$array[2] = 1,此时$array各元素分别为1,2,1
    第二次:$array[2] = 2,此时$array各元素分别为1,2,2
    第二次:$array[2] = 2,此时$array各元素分别为1,2,2

    这是第一次发现这种,写foreach之后赋值,然后把上一条数据的值,循环到下面数组的,一度非常费解。然后查找了相关资料,和群里面热心大宝同学的解答。解决了这个问题

  • 相关阅读:
    gdb调试动态链接so
    set non-stop on
    ntp对时
    360se打开慢,lsass 过高 , cpu温度上升
    CiscoIOUKeygen
    jitwatch查看JIT后的汇编码
    直接打开virtualbox报错
    老码农的Java干货资源
    java C 类自动转换规则
    java static learning
  • 原文地址:https://www.cnblogs.com/cici1989/p/12510819.html
Copyright © 2020-2023  润新知