dongpu9481 2013-11-22 15:45
浏览 44
已采纳

在while循环中分配数组会导致无限循环

$pie = array('Apple' => 1, 'Cherry' => 3, 'Pumpkin' => 6);
reset($pie);
while (list($k, $v) = each($pie)) {
    echo "$k => $v
";
    $desserts[]=$pie;
}

If the $desserts[]=$pie line is commented out, this code block executes as expected.

Why when it is uncommented does it go into an infinite loop?

I do not understand why that happens. This is a perfect example of what NOT to do, but I don't understand why the complete array is printed over and over. I thought just the first slice would be repeated.

  • 写回答

3条回答 默认 最新

  • duanmo7075 2013-11-22 15:48
    关注

    In the manual, it warns you not to do what you're doing.

    Caution: Because assigning an array to another variable resets the original arrays pointer, our example above would cause an endless loop had we assigned $fruit to another variable inside the loop.

    See documenation for each().

    You can achieve the same results using array_fill if you just wanted to make many copies of $pie.

     $desserts = array_fill(0,count($pie),$pie);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路