for
对于纯数字索引的数组可以通过for循环来遍历数组,但是要注意的是数字索引必须是连续的,否则会获取不到数组中的部分数据。遍历不受数组内部指针影响。
<?php
$ar1=range('a','e');
$len=count($ar1);
for($i=0;$i<$len;$i++){
echo $ar1[$i]."\n";
}
$ar1=array(0=>"a","2"=>"c","d");
$len=count($ar1);
for($i=0;$i<$len;$i++){
echo $ar1[$i]."\n";
}
?>
**
foreach
**
foreach可以遍历任何类型的数组,可以只遍历值,也可以同时遍历键和值。遍历不受数组内部指针影响。
<?php
$ar1=range('a','e');
$ar2=array_combine($ar1,range(1,5));
$ar1=array(0=>"a","2"=>"c","d");
foreach($ar1 as $k=>$v){
echo "$k=>$v\n";
}
foreach($ar2 as $k =>$v){
echo "$k=>$v\n";
}
foreach ($ar2 as $v) {
echo "$v\n";
}
?>
while/do…while、each
each函数以数组形式返回数组中当前的键/值对并将数组指针向前移动一步,each函数在PHP7.2后被移除。如果想要再次从头遍历需要重置数组内部指针。
<?php
$ar1=range('a','e');
$ar2=array_combine($ar1,range(1,5));
while($kv=each($ar2)){
echo $kv[0]."=>".$kv[1].",".$kv['key']."=>".$kv['value']."\n";
}
?>
**
while/do…while、list、each
**
通过list函数接受each返回的数组键/值对。如果想要再次从头遍历需要重置数组内部指针。
<?php
$ar1=range('a','e');
$ar2=array_combine($ar1,range(1,5));
while(list($k,$v)=each($ar2)){
echo "$k=>$v\n";
}
?>
**
while/do…while、key、next/prev、current
**
通过数组的next、prev等可操作数组内部指针的函数进行遍历。
<?php
$ar3=array("a"=>"a",1=>"b",false=>"c",3=>false,"d",null=>false,"f");
while(key($ar3)!==null){
echo key($ar3)."=>".current($ar3)."\n";
next($ar3);
}
?>