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 相关文章推荐
PHPShop存在多个安全漏洞
Oct 09 PHP
使用 eAccelerator加速PHP代码的目的
Mar 16 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
Dec 01 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
Jun 07 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
smarty内置函数section的用法
Jan 22 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
May 13 PHP
详解PHP数据压缩、加解密(pack, unpack)
Dec 17 PHP
PHP判断函数是否被定义的方法
Jun 21 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 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 htmlentities和htmlspecialchars 的区别
2008/08/18 PHP
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
再论Javascript的类继承
2011/03/05 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
jQuery.validate 常用方法及需要注意的问题
2013/03/20 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
vue实现瀑布流组件滑动加载更多
2020/03/10 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
[00:32]2018DOTA2亚洲邀请赛Secret出场
2018/04/03 DOTA
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python编程语言的35个与众不同之处(语言特征和使用技巧)
2014/07/07 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
基于python 取余问题(%)详解
2020/06/03 Python
为什么称python为胶水语言
2020/06/16 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
html5 兼容IE6结构的实现代码
2012/05/14 HTML / CSS
市场营销求职信范文
2014/02/21 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
学校创先争优活动总结
2014/08/28 职场文书
五五普法心得体会
2014/09/04 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
股份转让协议书范本
2015/01/27 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
环保主题班会教案
2015/08/13 职场文书
python单元测试之pytest的使用
2021/06/07 Python
Windows Server 2019 配置远程控制以及管理方法
2022/04/28 Servers