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 相关文章推荐
图形数字验证代码
Oct 09 PHP
简化php模板页面中分页代码的解析
Feb 06 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
Jul 01 PHP
destoon实现调用图文新闻的方法
Aug 21 PHP
如何实现php图片等比例缩放
Jul 28 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
PHP7匿名类用法分析
Sep 26 PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
php实现在线考试系统【附源码】
Sep 18 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 iconv 解决utf-8和gb2312编码转换问题
2010/04/12 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
laravel 框架执行流程与原理简单分析
2020/02/01 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
2016/01/19 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
jQuery+json实现动态创建复杂表格table的方法
2016/10/25 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
2017/04/23 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
如何运行Python程序的方法
2013/04/21 Python
Python正则表达式的使用范例详解
2014/08/08 Python
利用Python爬取可用的代理IP
2016/08/18 Python
flask中的wtforms使用方法
2018/07/21 Python
浅谈关于Python3中venv虚拟环境
2018/08/01 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
女大学生自我鉴定
2013/12/09 职场文书
离婚协议书范文
2015/01/26 职场文书
发票退票证明
2015/06/24 职场文书
创业计划书之服装
2019/10/07 职场文书
Docker与K8s关系介绍不会Docker也可以使用K8s
2022/06/25 Servers
Android实现获取短信验证码并自动填充
2023/05/21 Java/Android