作用:遍历输出数组或者对象,有点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