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 什么是PEAR?
Mar 19 PHP
PHP XML备份Mysql数据库
May 27 PHP
PHP读取文件并可支持远程文件的代码分享
Oct 03 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
zend framework框架中url大小写问题解决方法
Aug 19 PHP
php根据某字段对多维数组进行排序的方法
Mar 07 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
php开发时容易忘记的一些技术细节
Feb 03 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 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
基于mysql的论坛(3)
2006/10/09 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
浅谈php和.net的区别
2014/09/28 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
2014/10/27 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
js有关元素内容操作小结
2011/12/20 Javascript
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
uploadify 3.0 详细使用说明
2012/06/18 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
python实现dict版图遍历示例
2014/02/19 Python
python删除列表中重复记录的方法
2015/04/28 Python
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
使用Python读取大文件的方法
2018/02/11 Python
纯用NumPy实现神经网络的示例代码
2018/10/24 Python
Python中的 enum 模块源码详析
2019/01/09 Python
Django异步任务之Celery的基本使用
2019/03/23 Python
pandas 空数据处理方法详解
2019/11/02 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
在校生党员自我评价
2013/09/25 职场文书
师范生自荐信
2013/10/27 职场文书
优良学风班申请材料
2014/02/13 职场文书
小学端午节活动方案
2014/03/13 职场文书
广告创意求职信
2014/03/17 职场文书
2014年入党积极分子党校培训心得体会
2014/07/08 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
经典励志格言:每日一句,让你每天充满能量
2019/08/16 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang