当前位置:  首页>> 技术小册>> PHP8入门与项目实战(3)

在PHP 8中,foreach()函数的功能也发生了变化。
1.对内部指针失效
在PHP 8中,foreach()循环对数组内部指针不再起作用。
【例6.22】

  1. <?php
  2. $array = [0, 1, 2];
  3. foreach ($array as &$val)
  4. {
  5. var_dump(current($array));
  6. }
  7. ?>

在PHP 8中运行,结果会打印三次int(0),也就是说数组的内部指针并没有改变。运行结果如图6-28所示。

在PHP 5中运行,结果会显示int 1、int 2和boolean false。运行结果如图6-29所示。

2.按照值进行循环时,修改数组不再影响循环行为
在PHP 8中,foreach()按照值进行循环的时候,foreach是对该数组的一个复制进行操作。这样在循环过程中对数组做的修改是不会影响循环行为的。
【例6.23】

  1. <?php
  2. $array = [100,200,300];
  3. $ref =& $array;
  4. foreach ($array as $val) {
  5. unset($array[1]);
  6. echo "数组值: " . $val . "<br/>";
  7. }
  8. ?>

在PHP 8中,上面的代码虽然在循环中把数组的第2个元素销毁掉了,还是会把数组的3个元素全部打印出来。结果如图6-30所示。

在PHP 5中,上面的代码只会把2个元素打印出来(100、300)。结果如图6-31所示。