foreach遍历的疑问
<?php
//定义数组
$arr=[1,''=>true,24=>'Harry Potter',''=>'javascript','class'=>'English'];
//输出数组该使用哪个输出函数?
print_r($arr);
//第一步:重置数组指针(将数组指针移到数组开头)
//第二步:通过数组指针的移动,遍历输出每一个元素的键名和键值
//从前往后遍历数组,
foreach($arr as $key=>$val){
echo '当前指针所在位置元素的键名为:',$key,'<br>';
echo '当前指针所在位置元素的键值为:',$val,'<br>';
echo '<br>';
next($arr);
}
echo '<hr>';
echo'<hr>';
end($arr);
//从后往前遍历数组(步骤与从前往后遍历数组类同,小伙伴自己尝试一下吧)
foreach($arr as $key=>$val){
echo '当前指针所在位置元素的键名为:',key($arr),'<br>';
echo '当前指针所在位置元素的键值为:',current($arr),'<br>';
prev($arr);
echo'<br>';
}
?>
正在回答 回答被采纳积分+1
补充下问题,第一次从前往后遍历数组,用$key和$val,可以顺利得到键值对,第二次重置了数组内部指针,将指针指向了最后一个键,我在使用foreach结合prev(),使用$key和$val却得不到从后往前的结果,任然是从前往后的,如何解释?改用current()和key()后顺利的到结果。
当我从后往前遍历时,采用foreach($arr as $key=>$val)和prev(),是因为foreach是针对数组副本操作,prev()是对原数组操作么,对foreach而言,无论用几次,数组内部指针是不是还是在第一个键值那,依旧按前往后一个个遍历循环体?


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星