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 网页过期时间的控制代码
Jun 29 PHP
Php中文件下载功能实现超详细流程分析
Jun 13 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
May 27 PHP
php+ajax实现无刷新动态加载数据技术
Apr 28 PHP
PHP实现GIF图片验证码
Nov 04 PHP
简单谈谈php浮点数精确运算
Mar 10 PHP
你不知道的文件上传漏洞php代码分析
Sep 29 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
php实现的http请求封装示例
Nov 08 PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 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 Session存储到Redis的方法
2013/11/04 PHP
网页上facebook分享功能具体实现
2014/01/26 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
JS实现动态生成表格并提交表格数据向后端
2020/11/25 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
three.js实现3D影院的原理的代码分析
2017/12/18 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
python线程的几种创建方式详解
2019/08/29 Python
django rest framework 过滤时间操作
2020/07/12 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
新学期红领巾广播稿
2014/01/14 职场文书
土木建筑学生自我评价
2014/01/14 职场文书
团队精神口号
2014/06/06 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
校友回访母校寄语
2015/02/26 职场文书
mysql数据库如何转移到oracle
2022/12/24 MySQL
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技