PHP7新特性foreach 修改示例介绍
php  /  管理员 发布于 7年前   156
一、foreach()循环对数组内部指针不再起作用,在PHP7之前,当数组通过foreach迭代时,数组指针会移动。现在开始,不再如此,见下面代码。。 PHP5运行的结果会打印int(1) int(2) bool(false) PHP7运行的结果会打印三次int(0),也就是说数组的内部指针并没有改变。 之前运行的结果会打印int(1), int(2)和bool(false) 二、按照值进行循环的时候,foreach是对该数组的拷贝操作 foreach按照值进行循环的时候(by-value),foreach是对该数组的一个拷贝进行操作。这样在循环过程中对数组做的修改是不会影响循环行为的。 上面的代码虽然在循环中把数组的第二个元素unset掉,但PHP7还是会把三个元素打印出来:(0 1 2) 三、按照引用进行循环的时候,对数组的修改会影响循环。 如果在循环的时候是引用的方式,对数组的修改会影响循环行为。不过PHP7版本优化了很多场景下面位置的维护。比如在循环时往数组中追加元素。 上面的代码中追加的元素也会参与循环,这样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 修改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对站的支持!$array = [0, 1, 2];foreach ($array as &$val) {var_dump(current($array));}
$array = [0, 1, 2];$ref =& $array; // Necessary to trigger the old behaviorforeach ($array as $val) {var_dump($val);unset($array[1]);}
之前老版本的PHP会把1跳过,只打印(0 2).$array = [0];foreach ($array as &$val) {var_dump($val);$array[1] = 1;}
您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号