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 相关文章推荐
BBS(php &amp; mysql)完整版(五)
Oct 09 PHP
第十一节--重载
Nov 16 PHP
使用 MySQL Date/Time 类型
Mar 26 PHP
PHP源码之explode使用说明
Aug 05 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
自己在做项目过程中学到的PHP知识收集
Aug 20 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 PHP
php不写闭合标签的好处
Mar 04 PHP
php类声明和php类使用方法示例分享
Mar 29 PHP
php in_array() 检查数组中是否存在某个值详解
Nov 23 PHP
Laravel5.4框架中视图共享数据的方法详解
Sep 05 PHP
PDO实现学生管理系统
Mar 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
一个程序下载的管理程序(四)
2006/10/09 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
5分钟学会Vue动画效果(小结)
2018/07/21 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
2019/06/07 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
2019/08/20 Javascript
python之wxPython菜单使用详解
2014/09/28 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python获取代理IP的实例分享
2018/05/07 Python
python实现定时提取实时日志程序
2018/06/22 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
python线程池如何使用
2020/05/28 Python
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
保密承诺书
2014/03/27 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
学习型党组织心得体会
2014/09/12 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
公司租车协议书
2015/01/29 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
Go语言基础知识点介绍
2021/07/04 Golang
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers