gpt4 book ai didi

PHP7新特性foreach 修改示例介绍

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章PHP7新特性foreach 修改示例介绍由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

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

?
1
2
3
4
5
$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) 。

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

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

?
1
2
3
4
5
6
$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). 。

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

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

?
1
2
3
4
5
$array = [0];
foreach ( $array as & $val ) {
var_dump( $val );
$array [1] = 1;
}

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

4、对简单对象plain (non-Traversable) 的循环.

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

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

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

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

最后此篇关于PHP7新特性foreach 修改示例介绍的文章就讲到这里了,如果你想了解更多关于PHP7新特性foreach 修改示例介绍的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com