list,each,foreach进行代码说明
<?php $data = array('a' => 'data1', 'b' => 'data2', 'c' => 'data3'); while($element = each($data)) { echo ($element['key']); echo "/n<br>"; echo ($element['value']); echo "/n<br>"; print_r($element); echo "/n<br>";
} reset($data); /*
返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键
值为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。如果内部
指针越过了数组的末端,则 each() 返回 FALSE。 */
while(list($subscript,$value) = each($data))
{ echo "$subscript=>$value";
echo "/n<br>";
} reset($data);
/*
在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用
reset()
*/
foreach($data as $subscript => $value) //$subscript,下标索引 ,$value值; { echo "$subscript => $value :: "; echo "$subscript => $value/n<br>";
echo $data[$subscript].'<br>';//输出值
}
/*
这只是一种遍历数组简便方法。
foreach 仅能用于数组,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。当
foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在
foreach 循环之前调用
reset()。
除非数组是被
引用,
foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此数组指针不会被
each() 结构改变,对返回的数组单元的修改也不会影响原数组。不过原数组的内部指针
的确在处理数组的过程中向前移动了。假定 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。 自 PHP 5 起,可以很容易地通过在
$value 之前加上 & 来修改数组的单元。此方法将以
引用赋值而不是拷贝一个值。
*/
?>
运行结果:
a data1 Array ( [1] => data1 [value] => data1 [0] => a [key] => a ) b data2 Array ( [1] => data2 [value] => data2 [0] => b [key] => b ) c data3 Array ( [1] => data3 [value] => data3 [0] => c [key] => c ) a=>data1 b=>data2 c=>data3 a => data1 :: a => data1 b => data2 :: b => data2 c => data3 :: c => data3