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 相关文章推荐
destoon复制新模块的方法
Jun 21 PHP
跟我学Laravel之视图 &amp; Response
Oct 15 PHP
PHP性能分析工具XHProf安装使用教程
May 13 PHP
非常全面的php日期时间运算汇总
Nov 04 PHP
使用phpstorm和xdebug实现远程调试的方法
Dec 29 PHP
PHP 的比较运算与逻辑运算详解
May 12 PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 PHP
利用PHP实现开心消消乐的算法示例
Oct 12 PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 PHP
PHP后期静态绑定实例浅析
Dec 21 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
PHP数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
浅析Javascript ES6新增值比较函数Object.is
2016/08/24 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
Python中pymysql 模块的使用详解
2019/08/12 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
Python @property装饰器原理解析
2020/01/22 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
写好自荐信要注意的问题
2013/11/10 职场文书
高中生的自我评价
2014/03/04 职场文书
校庆标语集锦
2014/06/25 职场文书
委托证明范本
2014/11/25 职场文书
公务员个人考察材料
2014/12/23 职场文书