从后向前遍历数组为啥出现问题?
<?php
//定义数组
$arr=$arr=[1,''=>true,24=>'Harry Potter',''=>'javascript','class'=>'English'];
//输出数组该使用哪个输出函数?
print_r($arr);
foreach ($arr as $var){
echo '当前指针所在元素键名',key($arr),'<br>';
echo '当前指针所在元素键值',current($arr),'<br>';
next($arr);
}
echo '<hr>';
echo '<hr>';
reset($arr);
end($arr);
echo key($arr),'<br>';
echo current($arr),'<br>';
foreach ($arr as $var){
echo '当前指针所在元素键名',key($arr),'<br>';
echo '当前指针所在元素键值',current($arr),'<br>';
prev($arr);
}
//while (current($arr)){
// echo '当前指针所在元素键名',key($arr),'<br>';
// echo '当前指针所在元素键值',current($arr),'<br>';
// prev($arr);
//}
?>50
收起
正在回答
2回答
您好,foreach使用时需注意:1.当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。2.由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。
下列代码中设置指针指向最后一个单元,遍历时将数组的内部指针倒回一位,但是foreach遍历时依旧是从第一个值输出至最后一个值。foreach是根据自己本身的遍历机制在运行,并没有受到更改指针而带来的影响。因此您的代码向后遍历无法成功,向前遍历成功是由于foreach本身可以进行遍历。
<?php
//定义数组
$arr=[1,''=>true,24=>'Harry Potter',''=>'javascript','class'=>'English'];
print_r($arr);
echo '<hr>';
end($arr);
foreach ($arr as $key => $var){
echo '当前指针所在元素键名',$key,'<br>';
echo '当前指针所在元素键值',$var,'<br>';
prev($arr);
}
如果解决了您的问题,请采纳,祝学习愉快!
好帮手慕查理
2017-11-22 10:53:46
您好,可参考:
<?php
echo '<pre>';
//定义数组
$arr=[1,''=>true,24=>'Harry Potter',''=>'javascript','class'=>'English'];
//打印数组
print_r($arr);
//将数组的内部指针指向第一个单元
reset($arr);
//检测指针是否存在,并循环输出
while(!is_null(key($arr))){
echo '当前指针所在位置元素的键名为:'.key($arr).'<br>';
echo '当前指针所在位置元素的键名为:'.current($arr).'<br><br>';
next($arr);
}
echo '<hr>';
echo '<hr>';
//将数组的内部指针指向最后一个单元
end($arr);
//检测指针是否存在,并循环输出
while(!is_null(key($arr))){
echo '当前指针所在位置元素的键名为:'.key($arr).'<br>';
echo '当前指针所在位置元素的键名为:'.current($arr).'<br><br>';
prev($arr);
}
echo '</pre>';
?>如果解决了您的问题,请采纳,祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星