PHP数组游标实现对数组的各种操作详解

这篇文章主要介绍了PHP数组游标实现对数组的各种操作,结合实例形式较为详细的分析了PHP数组操作中current与next方法控制数组游标移动实现数组遍历的技巧,需要的朋友可以参考下。

本文实例分析了PHP数组游标实现对数组的各种操作,分享给大家供大家参考,具体如下:

如何不用foreach实现对数组实现循环?

答:我们只需要模拟foreach就行了,数组在执行foreach循环的时候,是有一个游标指向当前数组循环到的值,那如果我们能拿到这个游标,并且操作游标,使游标前进或者后退,那么我们就能不用foreach而实现循环数组,直接上代码,清晰直观:

  1. <?php
  2. $arr = array('你','若','安','好','便','是','晴','天');
  3. //current()函数是取得游标所在数组位置的值
  4. //next()是使游标向数组的尾部移动一格
  5. for(;$v=current($arr);next($arr)){
  6. echo $v,'<br />';
  7. }
  8. /*
  9. 返回
  10. 便
  11. */
  12. //那么又如何使游标2步2步一走呢?
  13. for(;$v=current($arr);){
  14. echo $v,'<br />';
  15. next($arr);
  16. next($arr);
  17. }
  18. //执行结果,没有反应,这是为什么呢?
  19. //原因是前面一个循环游标已经到了数组的最尾部了
  20. //因此,当执行current($arr)时总是返回false,
  21. //因此第二个循环是不会执行的
  22. //因此这里我们会用一个reset()方法来使游标重新指向数组的头部
  23. reset($arr);
  24. echo '<hr />';
  25. for(;$v=current($arr);){
  26. echo $v,'<br />';
  27. next($arr);
  28. next($arr);
  29. }
  30. //那么又如何走2步,退一步呢?
  31. reset($arr);
  32. echo '<hr />';
  33. for($flag=true;$v=current($arr);){
  34. echo $v,'<br />';
  35. if($flag){
  36. next($arr);
  37. next($arr);
  38. $flag=false;
  39. }else{
  40. prev($arr);
  41. $flag=true;
  42. }
  43. }
  44. /*
  45. 返回
  46. 便
  47. 便
  48. */
  49. //如何倒着循环呢?
  50. //这里要用到end()函数了,让数组的游标指向尾部
  51. end($arr);
  52. echo '<hr />';
  53. for(;$v=current($arr);prev($arr)){
  54. echo $v,'<br />';
  55. }
  56. /*
  57. 返回:
  58. 便
  59. */
  60. //注意当数组的值等于0,false,null,undefined,""时,for循环的第二部会返回false,就会使循环终止
  61. reset($arr);
  62. echo '<hr />';
  63. $arr2 = array('你','若',0,'好','便','是','晴','天');
  64. for(;$v=current($arr2);next($arr2)){
  65. echo $v,'<br />';
  66. }
  67. /*
  68. 返回
  69. */
  70. ?>

除了这些还可以用key()函数得到游标所指向的键。