首页 > 后端开发 > 正文

关于php中的foreach问题 深入理解PHP中的foreach

2024-10-28 08:36:26 | 我爱编程网

今天我爱编程网小编整理了关于php中的foreach问题 深入理解PHP中的foreach相关内容,希望能帮助到大家,一起来看下吧。

本文目录一览:

关于php中的foreach问题 深入理解PHP中的foreach

关于php中的foreach问题

foreach用来遍历数组的。
比如
$arr=array('k1'=>'v1','k2'=>'v2');
foreach($arr as $v){ //变量$v为值。
echo $v.'<br />'; //将分两行输出v1,v2
}
foreach($arr as $k=>$v){ //变量 $k 为键。变量$v为值。
echo $k.'-'.$v.'<br />'; //将分两行输出k1-v1,k2-v2
}

关于php中的foreach问题 深入理解PHP中的foreach我爱编程网

PHP 关于foreach函数的问题

foreach是什么:
foreach不是函数!
foreach是一种流程控制,类似if else, do while之类的.仅用于数组.只是用于遍历数组的简便方法.

用法:
有两种

foreach (array_expression as $value) statement
说明:
foreach(数组变量 as 数组元素值) {
循环过程中的操作语句
}
例子:
$num = array(1,2,3,4);
foreach($num as $id) {
echo $id
}
循环输出数组$num里面各元素的值.
--------------
二:
foreach (array_expression as $key => $value) statement
说明:
foreach (数组变量 as 数组元素键值 => 数组元素值) {
循环过程中的操作语句
}
例子:

$num = array (
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4
);

foreach ($num as $k => $v) {
print "\$num[$k] => $v.\n"; //$k就是one,two,three...的那些键值,$v就是1,2,3...
}

下面的如果不能理解,可以不看.
--------------------------
foreach 不能用@屏蔽错误.
foreach 操作的是数组的拷贝而不是数组本身.就是在循环里面改变数组指针(each()有这能力)也不影响数组原有的循环.
foreach 开始执行时,数组内部的指针会自动指向第一个单元。故不用考虑在使用前是否需要对数组指针进行复位(reset()).

关于php中的foreach问题 深入理解PHP中的foreach

深入理解PHP中的foreach

我爱编程网(https://www.52biancheng.com)小编还为大家带来深入理解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循环处理数组。


如有疑问,欢迎指正。

以上就是关于php中的foreach问题 深入理解PHP中的foreach全部内容,更多相关信息,敬请关注我爱编程网。更多相关文章关注我爱编程网:www.52biancheng.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
标签: PHP
与“关于php中的foreach问题 深入理解PHP中的foreach”相关推荐
深入PHP中的HashTable结构详解(关于php hash_hmac 与java签名的转化问题)
深入PHP中的HashTable结构详解(关于php hash_hmac 与java签名的转化问题)

深入PHP中的HashTable结构详解深入PHP中的HashTable结构详解深入PHP中的HashTable结构详解对php内核有一定了解的人应该都知道php的精髓就是HashTable,HashTable在php的实现中无处不在。包括php的数组、什么全局变量、局部变量的作用域等等,php的hashtable拆开来说就是四部分:hash函数:用的是time33的散列

2024-12-03 08:45:45
PHP中的函数-- foreach()的用法详解(关于PHP跳出循环continue函数的问题)
PHP中的函数-- foreach()的用法详解(关于PHP跳出循环continue函数的问题)

PHP中的函数--foreach()的用法详解PHP4引入了foreach结构,和Perl以及其他语言很像。这只是一种遍历数组简便方法。foreach仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。复制代码代码如下:foreach(array_expressiona

2024-11-30 00:35:00
PHP中的函数-- foreach()的用法详解(一个很简单的PHP面向对象 问题)
PHP中的函数-- foreach()的用法详解(一个很简单的PHP面向对象 问题)

PHP中的函数--foreach()的用法详解PHP4引入了foreach结构,和Perl以及其他语言很像。这只是一种遍历数组简便方法。foreach仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。有两种语法,第二种比较次要但却是第一种的有用的扩展。复制代码代码如下:foreach(array_expressiona

2024-11-21 18:38:06
关于php程序的问题 php对数据进行数据处理?
关于php程序的问题 php对数据进行数据处理?

php常识选择题1.PHP选择题选择B。PHP是一种简单的,面向对象的,解释型的,健壮的,安全的,性能非常之高的,独立于架构的,可移植的,动态的脚本语言。PHP具有和JAVA类似的Class关键字。因为不需要虚拟机,以致速度比JAVA快5倍。PHP正迅速变成一种标准的,多用途的,面向对象的脚本语言。PHP不仅可用来开发Web应用程序,也可以开发普通应用程序。PHP是一种

2024-10-05 17:37:49
php中function函数的用法(PHP中的函数-- foreach()的用法详解)
php中function函数的用法(PHP中的函数-- foreach()的用法详解)

php中function函数的用法在PHP中,function是用于定义和声明函数的关键字。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行。通过使用函数,可以将代码模块化,提高代码的可读性、可维护性和重用性。在PHP中,function关键字用于定义和声明函数。函数是一段可重复使用的代码块,它封装了一系列操作或逻辑,并可以通过函数名进行调用和执行,

2024-11-14 10:13:30
关于PHP中的文件上传函数move_uploaded_file,提示权限问题,该怎么解决
关于PHP中的文件上传函数move_uploaded_file,提示权限问题,该怎么解决

关于PHP中的文件上传函数move_uploaded_file,提示权限问题,该怎么解决请检查你对D:/AppServ/www/该目录有没有写权限以及C:\Windows\Temp有没有读写权限。PermissiondeniedinD:\AppServ\www\PHP\demo.phponline7该条语句告诉我们文件写入的权限被禁止。我在网上截了2篇文章,地址如下()以

2024-11-03 12:26:47
关于PHP的sleep()函数导致的问题(PHP中的sleep函数失效)
关于PHP的sleep()函数导致的问题(PHP中的sleep函数失效)

关于PHP的sleep()函数导致的问题但是同时两次访问index1.php,第二个需要等第一个完成之后再等20秒才能正常显示,即第二个页面需要等40s才能正常显示--------------------------------------你是怎么同时2次访问index1.php的?即第二个页面需要等40s才能正常显示---------------------------

2024-09-19 16:09:50
求PHP高手解析一下shuffle函数的实现原理 PHP中foreach函数用法?
求PHP高手解析一下shuffle函数的实现原理 PHP中foreach函数用法?

求PHP高手解析一下shuffle函数的实现原理你好,shuffle函数是随机变换数组元素位置,其实思路很简单,我们知道数组都可以计算其长度,$len=count($array)以后,我们只要用循环配合rand(0,$len)随机出一个位置,保存到一个新数组当中,因为在循环中,随机出来的位置可能一样,这时判断该随机位置有没在数组中,若有继续rand,没有则存进数组,直到个数够了,然后在逐个a

2025-02-20 00:04:54