从后向前遍历数组为啥出现问题?
<?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 星