怎么在PHP7中对foreach进行修改

php有什么用

php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使得php经久不衰。

一、foreach()循环对数组内部指针不再起作用,

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

PHP5运行的结果会打印int(1) int(2) bool(false)

PHP7运行的结果会打印三次int(0),也就是说数组的内部指针并没有改变。

之前运行的结果会打印int(1), int(2)和bool(false)

二、按照值进行循环的时候,foreach是对该数组的拷贝操作

foreach按照值进行循环的时候(by-value),foreach是对该数组的一个拷贝进行操作。这样在循环过程中对数组做的修改是不会影响循环行为的。

$array = [0, 1, 2];
$ref =& $array; // Necessary to trigger the old behavior
foreach ($array as $val) {
var_dump($val);
unset($array[1]);
}

上面的代码虽然在循环中把数组的第二个元素unset掉,但PHP7还是会把三个元素打印出来:(0 1 2)
之前老版本的PHP会把1跳过,只打印(0 2).

三、按照引用进行循环的时候,对数组的修改会影响循环。

如果在循环的时候是引用的方式,对数组的修改会影响循环行为。不过PHP7版本优化了很多场景下面位置的维护。比如在循环时往数组中追加元素。

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

上面的代码中追加的元素也会参与循环,这样PHP7会打印"int(0) int(1)",老版本只会打印"int(0)"。

四、对简单对象plain (non-Traversable) 的循环。

对简单对象的循环,不管是按照值循环还是按引用循环,和按照引用对数组循环的行为是一样的。不过对位置的管理会更加精确。

五、对迭代对象(Traversable objects)对象行为和之前一致。

编者按:stackoverflow上面的解释:Traversable object is one that implements Iterator or IteratorAggregate interface。如果一个对象实现了iterator或者IteratorAggregate接口,即可称之为迭代对象。

原创文章,作者:TZSJD,如若转载,请注明出处:http://www.wangzhanshi.com/n/9461.html

(0)
TZSJD的头像TZSJD
上一篇 2025年1月1日 16:46:37
下一篇 2025年1月1日 16:46:39

相关推荐

  • 怎么在Ubuntu16.04环境中安装PHP7

    由于在Ubuntu16.04上,默认的PHP版本就是7.x。由于我们要使用Apache2.4+PHP,所以安装如下模块即可直接解析PHP。 sudo apt-get&nb…

    php 2025年1月1日
  • php7安装opcache的方法

    php有什么用 php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因…

    2025年1月1日
  • PHP7带来了哪些好处

    本文是一篇讲座听后+后续研究的总结。 话说当年追时髦,php7一出就给电脑立马装上了,php5和php7共存,也是立马写了个超级耗时间的循环脚本测了一番,确实php7给力很多,然后…

    2025年1月1日
  • php7+中怎么使用openssl替代mcrypt进行AES加密解密

    mcrypt十年过去,现在php7+中已经开始淘汰。官方给出掉提示: mcrypt_get_block_size — 获得加密算法的分组大小 Warning T…

    php 2025年1月1日
  • windows上php7环境搭建的方法

    php有什么用 php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因…

    2025年1月1日
  • PHP利用ffmpeg获取音频、视频的详细信息

    一、目的 使用PHP利用ffmpeg获取音频、视频的详细信息,音视频总时长、码率、视频分辨率、音频编码、音频采样频率、实际播放时间、文件大小。 二、下载并安装ffmpeg 1、下载…

    2024年12月17日
  • php7中如何创建扩展

    将实现如下功能: <?phpecho say(); ?> 输出内容: $ php ./test.php $ he…

    php 2025年1月1日
  • 怎么在Mac中将php 5升级到php 7

    php有什么用 php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因…

    php 2025年1月1日
  • centos7中安装PHP7的步骤

    CentOS7的默认PHP版本是PHP5,但是如果我们要安装PHP7,不需要将现有的PHP5删除,只要将PHP升级到PHP7即可。使用 yum provides php 命令可以获…

    php 2025年1月1日
  • PHP filesize()函数获取文件大小信息用法实例

    如何使用filesize()函数来获取文件的大小 基本语法 filesize()函数的使用方法非常简单。下面是它的基本语法: filesize(string $filename):…

    php 2024年12月17日

发表回复

登录后才能评论