dongqingchan2385 2013-10-05 22:43
浏览 30

PHP foreach没有引用错过元素

I tend to find that when using foreach stuctures without using references, some elements of the array are missing.

$array = array();

/* ... */

$array[] = 1;
$array[] = 2;
$array[] = 3;

/* ... */

print_r($array); /* print_r always shows all elements */

foreach ($array as $element) { /* missing elements */ }
foreach ($array as &$element) { /* does a fine job */ }

I have had three independent occurrences of this in my code. The fix is easy (add &), but it sounds like a bug either in PHP or in my setup...

Are more people experiencing this? What is the problem?

PHP 5.4.12


EDIT

Case:

$a = array();
$a[] = 1;
$a[] = 2;
$a[] = 3;

foreach ($a as &$e)
{
    echo $e;
}

echo '<br>';

foreach ($a as $e)
{
    echo $e;
}

Output:

123
122
  • 写回答

2条回答 默认 最新

  • duanmeng1858 2013-10-05 22:52
    关注

    Just confirmed.

    <?php
      $x[]=1;
      $x[]=2;
      $x[]=3;
      $x[]=4;
      foreach($x as $y) {
        var_dump($y);
      }
    ?>
    

    int(1) int(2) int(3) int(4)

    评论

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀