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


Posted in PHP onJanuary 26, 2016

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

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

答:我们只需要模拟foreach就行了,数组在执行foreach循环的时候,是有一个游标指向当前数组循环到的值,

那如果我们能拿到这个游标,并且操作游标,使游标前进或者后退,那么我们就能不用foreach而实现循环数组

直接上代码,清晰直观:

<?php 
$arr = array('你','若','安','好','便','是','晴','天');
//current()函数是取得游标所在数组位置的值
//next()是使游标向数组的尾部移动一格
for(;$v=current($arr);next($arr)){
  echo $v,'<br />';
}
/*
返回
你
若
安
好
便
是
晴
天
*/
//那么又如何使游标2步2步一走呢?
for(;$v=current($arr);){
  echo $v,'<br />';
  next($arr);
  next($arr);
}
//执行结果,没有反应,这是为什么呢?
//原因是前面一个循环游标已经到了数组的最尾部了
//因此,当执行current($arr)时总是返回false,
//因此第二个循环是不会执行的
//因此这里我们会用一个reset()方法来使游标重新指向数组的头部
reset($arr);
echo '<hr />';
for(;$v=current($arr);){
  echo $v,'<br />';
  next($arr);
  next($arr);
}
//那么又如何走2步,退一步呢?
reset($arr);
echo '<hr />';
for($flag=true;$v=current($arr);){
  echo $v,'<br />';
  if($flag){
    next($arr);
    next($arr);
    $flag=false;
  }else{
    prev($arr);
    $flag=true;
  }
}
/*
返回
你
安
若
好
安
便
好
是
便
晴
是
天
晴
*/
//如何倒着循环呢?
//这里要用到end()函数了,让数组的游标指向尾部
end($arr);
echo '<hr />';
for(;$v=current($arr);prev($arr)){
  echo $v,'<br />';
}
/*
返回:
天
晴
是
便
好
安
若
你
*/
//注意当数组的值等于0,false,null,undefined,""时,for循环的第二部会返回false,就会使循环终止
reset($arr);
echo '<hr />';
$arr2 = array('你','若',0,'好','便','是','晴','天');
for(;$v=current($arr2);next($arr2)){
  echo $v,'<br />';
}
/*
返回
你
若
*/
?>

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

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP+APACHE实现用户论证的方法
Oct 09 PHP
PHP源码之 ext/mysql扩展部分
Jul 17 PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 PHP
解析yii数据库的增删查改
Jun 20 PHP
Yii结合CKEditor实现图片上传功能
Jun 13 PHP
php经典算法集锦
Nov 14 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
php compact 通过变量创建数组
Nov 15 PHP
php生成无限栏目树
Mar 16 PHP
PHP中__set()实例用法和基础讲解
Jul 23 PHP
php经典趣味算法实例代码
Jan 21 PHP
PHP面向对象程序设计实例分析
Jan 26 #PHP
PHP类的声明与实例化及构造方法与析构方法详解
Jan 26 #PHP
php实现爬取和分析知乎用户数据
Jan 26 #PHP
简单谈谈php延迟静态绑定
Jan 26 #PHP
php制作的简单验证码识别代码
Jan 26 #PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 #PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 #PHP
You might like
php实例分享之html转为rtf格式
2014/06/02 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
jquery each()源代码
2011/02/14 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
jQuery中removeProp()方法用法实例
2015/01/05 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
iView框架问题整理小结
2018/10/16 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
药剂专业学生求职信范文
2013/12/28 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
人力资源作业细则
2014/03/03 职场文书
个人贷款承诺书
2014/03/28 职场文书
大学生社会实践方案
2014/05/11 职场文书
承诺书范文
2014/06/03 职场文书
运动会广播稿200米(5篇)
2014/10/15 职场文书
质量保证书格式
2015/02/27 职场文书
个人政治思想总结
2015/03/05 职场文书
纪检监察立案决定书
2015/06/24 职场文书
思想工作总结范文
2015/08/12 职场文书
小学语文新课改心得体会
2016/01/22 职场文书
你真的会用Mysql的explain吗
2022/03/31 MySQL