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 09 PHP
一个查看session内容的函数
Oct 09 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
深入extjs与php参数交互的详解
Jun 25 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
PHPCMS忘记后台密码的解决办法
Oct 30 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
php项目中类的自动加载实例讲解
Sep 12 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函数utf8转gb2312编码
2006/12/21 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
PHP在线书签系统分享
2016/01/04 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
jquery checkbox,radio是否选中的判断代码
2010/03/20 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
layui表格 列自动适应大小失效的解决方法
2019/09/06 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
Python 代码性能优化技巧分享
2012/08/07 Python
python文件操作整理汇总
2014/10/21 Python
用Python编写简单的微博爬虫
2016/03/04 Python
Django values()和value_list()的使用
2020/03/31 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
html如何对span设置宽度
2019/10/30 HTML / CSS
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
工作保证书
2015/01/17 职场文书
事业单位个人总结
2015/02/12 职场文书
费城故事观后感
2015/06/10 职场文书
小学语文国培研修日志
2015/11/13 职场文书
goland设置颜色和字体的操作
2021/05/05 Golang
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python
利用python调用摄像头的实例分析
2021/06/07 Python
Nginx如何配置根据路径转发详解
2022/07/23 Servers