php遍历数组有几种方式?

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);
}
?>

原文:https://blog.csdn.net/asty9000/article/details/82263402

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章