php foreach问题

在php5版本中:

$array = [0, 1, 2];
foreach ($array as &$val) {
    var_dump(current($array));
}

打印结果是:

int(1)
int(2)
bool(false)

如果改为:

$array = [0, 1, 2];
foreach ($array as $val) {
    var_dump(current($array));
}

打印结果是:

int(1)
int(1)
int(1)

有懂的可以方便告知以上打印结果的原因吗?

阅读 1.8k
1 个回答

属于是 Bug,不要依赖此行为的结果。

从 PHP7.0 开始,foreach 循环不再改变数组内部指针了。

PHP 官方说明:https://www.php.net/manual/en...
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题