【web 开发基础】PHP8 中对数组操作的新变化(56)
自动创建元素的顺序改变
在 PHP8 中,引用赋值时,自动创建的数组元素或者对象属性的顺序和 PHP7 版本相比发生了变化,下面我们通过例子来体验下变化在哪里.
执行结果如下:
这个结果是 PHP8 运行之后的结果,而在 PHP7 的版本中元素的位置不会自动创建元素的顺序,而 PHP 会根据引用自动创建元素的顺序.
PHP8 中 list()函数修改数组的改变
在 PHP8 中 list()函数的功能发生以下改变:
1.不再按照相反的顺序赋值
在 PHP8 中,list()函数不再按照相反的顺序赋值,而在 PHP5 中,list()函数按照相反的顺序赋值.
PHP8 中的执行结果如下:
从结果可以看出,虽然赋值没有变化,但是赋值的顺序发生了变化,在 PHP8 中,返回的数组 $array == [10,20,30,40].在 PHP5 中,返回的数组 $array == [40,30,20,10]
2.不再允许赋空值
在 PHP8 中不再允许赋空值,具体代码如下:
上面的代码在 PHP8 中运行会直接报错,而在 PHP5 中,list()是允许赋空值的.
3.不再支持字符串拆分功能
在 PHP8 中,list()函数不再支持字符串拆分功能.具体代码如下:
在 PHP8 中运行直接报错,显示语法解析错误,而在 PHP5 中上述代码最终的结果是:$x == "x" and $y == "y"
4.可以用于数组对象
我们先来看看代码,再说结论:
执行结果如下:
在 PHP8 中,上述代码最终的结果是 $a == 10 and $b == 20 and $c == 30.而在 PHP5 中,上述代码最终的结果是:$a == null and $b == null and $c == null,而且不会有提示.运行一片空白.
foreach()函数修改数组的改变
在 PHP8 中,foreach()函数的功能也发生了变化.
1.对内部指针失效
在 PHP8 中,foreach()循环对数组内部指针不再起作用.
在 PHP8 中运行的运行结果如下:
结果会打印三次 int(1),也就是说数组的内部指针并没有改变.在 PHP5 中运行的结果会显示:int 1, int 2,和 boolean false.
2.按照值进行循环时,修改数组不再影响循环行为
在 PHP8 中,foreach()按照值进行循环的时候,foreach()是对该数组的一个复制操作.这样在循环过程中对数组做的修改是不会改变影响循环行为的.
执行结果如下:
在 PHP 8 中,上面的代码虽然在循环中把数组的第 2 个元素销毁掉了,还是会把数组的 3 个元素全部打印出来。而在 PHP 5 中,上面的代码只会把 2 个元素打印出来(100、300)。
3.按照引用进行循环时,对数组的修改会影响循环
如果在循环的时候使用引用的方式,对数组的修改就会影响循环行为。
执行结果如下:
在 PHP 8 中,追加的元素也会参与循环,结果会打印 100、200、300; 而在 PHP 5 中,追加的元素不会参与循环,结果只会打印 100。
版权声明: 本文为 InfoQ 作者【迷彩】的原创文章。
原文链接:【http://xie.infoq.cn/article/cf0fb2ef853f49b3bc5f231ee】。文章转载请联系作者。
评论