可以使用foreach:
foreach($array as $value){
//处理$value
}
或者获得一个数组的键和值:
foreach($array as $key => $value){
//第二种处理
}
还可以使用另一种技术:
for($key=0,$size =count($array);$key<$size;$key++){
//第三种处理
}
结合1ist()和while使用each()
reset($array);//将内部指针重置为数组起始位置
while(list($key,$value)=each($array)){
//最后一种处理
}
利用foreach,PHP将迭代处理数组的一个副本,而不是数组本身。
使用each()和for时,PHP会迭代处理原来的数组。
如果确实想修改数组,则要直接引用数组:
foreach($items as $item => $cost){
if(!in_stock($item)){
unset($items[$item]);//直接引用数组
}
}
foreach()返回的变量并不是数组中原值的别名:它们是一些副本,所以如果修改这些变量,不会反映到数组中。正是因为这个原因,需要修改$items[$item]而不是$cost。
使用each()时,PHP会跟踪循环中的位置。完成第一次遍历后,要重新开始,可以调用reset()将指针移回到数组起始位置。否则,each()将返回false。
for循环只适用于有连续整数键的数组。除非修改数组的大小,否则如果每次循环时都调用count()重新计算$items的个数,效率会很低,所以我们使用一个$size变量来保存数组的大小。
最后,可以使用array_map()把各个元素交给一个函数来完成处理:
//将所有单词变为小写
$lc= array_map('strtolower',$words);
array_map()的第一个参数是一个函数,用来修改各个元素,第二个参数是要迭代处理的数组。