php foreach原理

作用:遍历输出数组或者对象,有点php基础的同学就知道,不解释

用法举例:

预备知识:var_dump-函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值

(按值拷贝)

$num_arr = [1,2,3];

foreach ($num_arr as $val){echo $val.',';}

var_dump($num_arr);

输出结果:1,2,3和[1,2,3]

(按引用拷贝)

foreach($num_arr as &$val){echo $val.',';}

var_dump($num_arr);

输出结果:1,2,3和[1,2,&int(3)]

现象:单纯的两种遍历方式元素遍历结果一样,但是整体输出的结果不一样

解释:每个foreach在遍历变量的开始,首先会把指针指向首元素,遍历完成后原数组的内部指针将指向数组的结尾,并不会消失。故按第二个foreach会输出&int(3)--第三个元素为指向数字“3”的引用表示。(参考php手册)

按引用传递的话,在foreach内部修改数组的值会对原数组造成影响,而按值传递的话修改数组值,不影响原数组值。

PS1:本篇文章只说明foreach的用法,以及指针的变化情况,只能说是使用原理。

PS2:真正的底层实现参考大神文章:http://www.laruence.com/2008/11/20/630.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值