欢迎来到皮皮网网首页

【壁纸动态源码下载】【windbg源码调试驱动】【bitbake编译源码包】php foreach 源码

来源:武汉晴川学院源码 时间:2024-11-24 07:59:34

1.PHP中的源码函数-- foreach()的用法详解
2.深入理解PHP中的foreach

php foreach 源码

PHP中的函数-- foreach()的用法详解

       PHP

       4

       引入了

       foreach

       结构,和

       Perl

       以及其他语言很像。源码这只是源码一种遍历数组简便方法。foreach

       仅能用于数组,源码当试图将其用于其它数据类型或者一个未初始化的源码变量时会产生错误。有两种语法,源码壁纸动态源码下载第二种比较次要但却是源码第一种的有用的扩展。

       复制代码

       代码如下:

       foreach

       (array_expression

       as

       $value)

       statement

       foreach

       (array_expression

       as

       $key

       =>

       $value)

       statement

       第一种格式遍历给定的源码

       array_expression

       数组。每次循环中,源码当前单元的源码值被赋给

       $value

       并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

       第二种格式做同样的源码事,只除了当前单元的源码键名也会在每次循环中被赋给变量

       $key。

       自PHP

       5

       起,源码还可能遍历对象。源码

       注意:当

       foreach

       开始执行时,源码数组内部的指针会自动指向第一个单元。这意味着不需要在

       foreach

       循环之前调用

       reset()。windbg源码调试驱动

       注意:除非数组是被引用,foreach

       所操作的是指定数组的一个拷贝,而不是该数组本身。foreach对数组指针有些副作用。除非对其重置,在

       foreach

       循环中或循环后都不要依赖数组指针的值。

       自

       PHP

       5

       起,可以很容易地通过在

       $value

       之前加上

       &

       来修改数组的bitbake编译源码包元素。此方法将以引用赋值而不是拷贝一个值。

       复制代码

       代码如下:

       <?php

       $arr

       =

       array(1,

       2,

       3,

       4);

       foreach

       ($arr

       as

       &$value)

       {

       $value

       =

       $value

       

*

       2;

       }

       //

       $arr

       is

       now

       array(2,

       4,

       6,

       8)

>

       此方法仅在被遍历的数组可以被引用时才可用(例如是个变量)。

       复制代码

       代码如下:

       <?php

       foreach

       (array(1,

       2,

       3,

       4)

       as

       &$value)

       {

       $value

       =

       $value

       

*

       2;

       }

>

深入理解PHP中的foreach

       深入理解PHP中的foreach

       在PHP中,foreach循环是处理数组的常用工具,但由于其与其它语言的差异,容易引起混淆和错误。本文主要探讨了PHP5与PHP7中foreach的区别,以及值遍历和引用遍历的溯源码的好处情况,旨在帮助开发者更好地理解和使用foreach。

       PHP5和PHP7中foreach的区别在于,PHP7通过值遍历时,实际操作的是数组的副本,而非数组本身。当循环结束时,副本会被重新赋值给数组。下面的方维全套源码代码展示了这一特性:

       运行结果:phfpf

       值遍历的特性包括:

       foreach循环时确实复制了一份数组,循环的是副本。

       循环结束后,副本会重新赋值给数组,因此打印循环后的数组会返回赋值后的数组。

       在PHP7中,循环时未影响数组指针,指针仍然指向数组的第一位。

       值迭代时,foreach始终操作数组副本,对数组的操作不会影响到迭代行为。

       引用遍历则较为复杂,主要问题在于数组最后一个元素的$value引用在foreach循环后仍保留。下面的代码展示了这种情况:

       运行结果:0 => 2, 1 => 4, 2 => 4

       这里,因为$value引用未销毁,导致预期结果不符合。foreach结构等同于以下操作:

       第一遍循环,$v=$arr[0]触发,$arr[2]=$arr[0],$arr变为2,4,2

       第二遍循环,$v=$arr[1],$arr[2]=$arr[1],$arr变为2,4,4

       第三遍循环,$v=$arr[2],$arr[2]=$arr[2],$arr变为2,4,4

       解决方案是使用unset()销毁最后一个元素的引用。引用遍历的特性包括:

       最后一个元素的$value引用在foreach循环后仍保留。

       引用循环时,数组修改会影响循环。

       在处理引用传递时,如果在函数中使用unset()销毁变量,仅销毁局部变量,原数组值不受影响。例如:

       输出结果:Array ( [0] => 3 [1] => 4 [2] => 5 ), Array ( [0] => 3 [1] => 4 [2] => 4 )

       了解这些特性后,可以避免常见的foreach错误,并更高效地使用foreach循环处理数组。

       如有疑问,欢迎指正。