PHP7新特性foreach 修改使用例子
发布:smiling 来源: PHP粉丝网 添加日期:2018-09-16 12:19:38 浏览: 评论:0
一、foreach()循环对数组内部指针不再起作用,在PHP7之前,当数组通过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接口,即可称之为迭代对象。
Tags: 例子 特性
- 上一篇:2018年最简单的上外网方法
- 下一篇:PHP7错误处理机制详解介绍
相关文章
- ·PHP 7.1 新功能之 Nullable Type例子(2018-09-19)
- ·PHP新特性命名空间的详解介绍(2018-09-14)
- ·php7.1新特性简单介绍(2018-09-19)
- ·PHP7 新特性新功能有哪些?(2018-09-19)
- ·PHP6新特性分析(2019-11-29)
- ·PHP 7的一些引人注目的新特性简单介绍(2021-06-26)
- ·我整理的PHP 7.0主要新特性(2021-07-04)
- ·PHP5.3新特性小结(2021-07-09)
- ·PHP6新特性分析(2021-07-12)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)