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实时显示输出
Oct 02 PHP
php程序之die调试法 快速解决错误
Sep 17 PHP
五款常用mysql slow log分析工具的比较分析
May 22 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
php实现webservice实例
Nov 06 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
Yii中表单用法实例详解
Jan 05 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
Yii框架getter与setter方法功能与用法分析
Oct 22 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 PHP
基于PHP实现短信验证码发送次数限制
Jul 11 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批量上传的实现代码
2013/06/09 PHP
php基于协程实现异步的方法分析
2019/07/17 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
javascript json 新手入门文档
2009/12/03 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
javascript实现表格排序 编辑 拖拽 缩放
2015/01/02 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
2016/03/30 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
js中开关变量使用实例
2017/02/24 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
vue百度地图 + 定位的详解
2019/05/13 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
python根据路径导入模块的方法
2014/09/30 Python
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
分享python数据统计的一些小技巧
2016/07/21 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
h5实现获取用户地理定位的实例代码
2017/07/17 HTML / CSS
学生思想表现的评语
2014/01/30 职场文书
大学生校园创业计划书
2014/02/08 职场文书
2014最新党员批评与自我批评材料
2014/09/24 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
看雷锋电影观后感
2015/06/10 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
导游经典开场白——导游词
2019/04/17 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
mysql sock文件存储了什么信息
2022/07/15 MySQL