php7.0新特性foreach,PHP7新特性foreach 修改示例介绍

PHP7新特性foreach 修改示例介绍

这里有新鲜出炉的 PHP 面向对象编程,程序狗速度看过来!

PHP 开源脚本语言

PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。

这篇文章主要介绍了 php7 新特性 foreach 修改内容介绍,非常不错,介绍的非常详细,具有参考借鉴价值,对 php7 新特征相关知识感兴趣的朋友一起学习吧

一、foreach() 循环对数组内部指针不再起作用, 在 PHP7 之前,当数组通过 foreach 迭代时,数组指针会移动。现在开始,不再如此,见下面代码。。

$array=[0,1,2];

foreach($arrayas&$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($arrayas$val){

var_dump($val);

unset($array[1]);

}

上面的代码虽然在循环中把数组的第二个元素 unset 掉,但 PHP7 还是会把三个元素打印出来:(0 1 2)

之前老版本的 PHP 会把 1 跳过,只打印 (0 2).

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

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

$array=[0];

foreach($arrayas&$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 接口,即可称之为迭代对象。

以上所述是小编给大家介绍的 PHP7 新特性 foreach 修改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 PHPERZ 网站的支持!

来源: http://www.phperz.com/article/17/0802/342921.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值