a.关于foreach()
首先foreach()是一种循环控制结构,类似于for语句。
foreach()结构提供了一种简便遍历数组的方法;它只能用于数组,当你将它用于其他数据类型或者一个未初始化的变量时,会产生错误!foreach()结构有两种语法:
第一种:
foreach (array_expression as $value)
//do something
说明:这里array_expression为要遍历的数组,当foreach()开始工作的时候,会将数组中当前元素的值赋给变量$value;每执行一次循环后,数组指针向下移动一位,指向下一个数组元素;变量$value的作用就是存放遍历数组时数组指针指向的当前数组元素的值。(变量名取为value仅仅是为了便于理解,实际应用时你可以取任意合法的名字)
第二种:
foreach (array_expression as $key => $value)
//do something
说明:第二种语法和第一种不同之处在于该语法执行时会将数组指针指向的当前数组元素的关键字值或索引值存放到变量$key中,而将与该关键字或索引相对应的数组元素的值存放到变量$value中。(同样这里变量名key和value的也是为了便于理解,实际用的时候你可以自由取名)
注1:当foreach()开始执行的时候,数组内部的指针会自动指向数组的第一个元素,这就是说不需要再使用foreach()之前调用reset().
注2:foreach()操作的是指定数组的一个拷贝,而不是数组本身,它不会对数组本身造成影响;若想修改数组元素,指定数组必须是被引用的。手册上讲的foreach对数组指针有些副作用,在foreach循环中或后都不要依赖数组指针的值,除非对其重置,我的理解是:在使用foreach操作一个数组后,如要使用该数组指针,最好将该数组指针进行重置。
下面是关于数组被引用的例子:
<?php
$array_1=array(1,2,3);
foreach($array_1 as $v1)
{
echo $v1.'</br>'; //输出:1 2 3
$v1=$v1*2;
}
foreach($array_1 as &$v2)
{
echo $v2.'</br>