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中函数的形参与实参的问题说明
Sep 01 PHP
浅谈php扩展imagick
Jun 02 PHP
PHP版微信公众平台红包API
Apr 02 PHP
分享3个php获取日历的函数
Sep 25 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
PHP使用PDO抽象层获取查询结果的方法示例
May 10 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
PHP扩展类型及安装方式解析
Apr 27 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
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
js不是基础的基础
2006/12/24 Javascript
javascript编程起步(第四课)
2007/01/10 Javascript
JavaScript Archive Network 集合
2007/05/12 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
javascript date格式化示例
2013/09/25 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
javascript的replace方法结合正则使用实例总结
2016/06/16 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
如何快速上手Vuex
2017/02/14 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
Python 用户登录验证的小例子
2013/03/06 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
django将数组传递给前台模板的方法
2019/08/06 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
2020/02/17 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
职业生涯规划设计步骤
2014/01/12 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
邓小平理论心得体会
2014/09/09 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话全文
2014/10/25 职场文书
2015年教研组工作总结
2015/05/04 职场文书
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python
Docker下安装Oracle19c
2022/04/13 Servers