本文实例分析了PHP数组游标实现对数组的各种操作。分享给大家供大家参考,具体如下:

如何不用foreach实现对数组实现循环?

答:我们只需要模拟foreach就行了,数组在执行foreach循环的时候,是有一个游标指向当前数组循环到的值,

那如果我们能拿到这个游标,并且操作游标,使游标前进或者后退,那么我们就能不用foreach而实现循环数组

直接上代码,清晰直观:

$arr = array('你','若','安','好','便','是','晴','天');

//current()函数是取得游标所在数组位置的值

//next()是使游标向数组的尾部移动一格

for(;$v=current($arr);next($arr)){

echo $v,'
';

}

/*

返回

便

*/

//那么又如何使游标2步2步一走呢?

for(;$v=current($arr);){

echo $v,'
';

next($arr);

next($arr);

}

//执行结果,没有反应,这是为什么呢?

//原因是前面一个循环游标已经到了数组的最尾部了

//因此,当执行current($arr)时总是返回false,

//因此第二个循环是不会执行的

//因此这里我们会用一个reset()方法来使游标重新指向数组的头部

reset($arr);

echo '


';

for(;$v=current($arr);){

echo $v,'
';

next($arr);

next($arr);

}

//那么又如何走2步,退一步呢?

reset($arr);

echo '


';

for($flag=true;$v=current($arr);){

echo $v,'
';

if($flag){

next($arr);

next($arr);

$flag=false;

}else{

prev($arr);

$flag=true;

}

}

/*

返回

便

便

*/

//如何倒着循环呢?

//这里要用到end()函数了,让数组的游标指向尾部

end($arr);

echo '


';

for(;$v=current($arr);prev($arr)){

echo $v,'
';

}

/*

返回:

便

*/

//注意当数组的值等于0,false,null,undefined,""时,for循环的第二部会返回false,就会使循环终止

reset($arr);

echo '


';

$arr2 = array('你','若',0,'好','便','是','晴','天');

for(;$v=current($arr2);next($arr2)){

echo $v,'
';

}

/*

返回

*/

?>

除了这些还可以用key()函数得到游标所指向的键。

更多关于PHP数组相关内容感兴趣的读者可查看本站专题:《PHP数组(Arrary)总结》

希望本文所述对大家PHP程序设计有所帮助。

php 数组对,PHP数组游标实现对数组的各种操作详解相关推荐

  1. 指针数组,数组指针,指针函数,函数指针,二级指针详解

    先看个简单的:char *p,这定义了一个指针,指针指向的数据类型是字符型,char  *(p)定义了一个指针P: char *p[4], 为指针数组,由于[]的优先级高于*,所以p先和[]结合,p[ ...

  2. watch深度监听数组_vue watch普通监听和深度监听实例详解(数组和对象)

    vue watch普通监听和深度监听实例详解(数组和对象) 下面通过一段代码给大家介绍vue watch的普通监听和深度监听,具体代码如下所示: var vm=new Vue({ data:{ num ...

  3. c++随机打乱数组_编程之路之php数组操作详解【文末有惊喜】

    一.数组的操作 数组是一种复合数据类型,是数据的集合. 数组中的数据称为元素,每个元素是由键和值组成的键值对. 二.数组分类 1.关联数组 数据是由键和值形式构成的数组,键和值有一定关系 $arr = ...

  4. JS--JavaScript数组Array(join、split、reverse、concat、slice)详解

    JavaScript数组 数组(Array)是一组有序数据集合,拥有大量方法,适合完成一些复杂的运算. 定义数组 定义数组通过构造函数Array()和运算符new来实现,具体方法如下: 1. 定义空数 ...

  5. js删除数组中指定元素_js中数组操作详解

    今天给大家带来一篇有关数组操作方法的文章. 新建数组 方法一:通过new运算符创建一个数组构造函数. var arr = new Array(); 方法二:通过方括号直接创建直接量数组. var ar ...

  6. 数据在数组中存储的顺序:小端 OR 大端模式 详解

    大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放: 小端模式,是指数据的高 ...

  7. java 数组去重排序_Java实现的数组去重与排序操作详解

    本文实例讲述了Java实现的数组去重与排序操作.分享给大家供大家参考,具体如下: 这里演示Java实现数组去重.排序操作 文中的示例源码编写基于Jdk1.6+.junit4.8.2 java.util ...

  8. java整型数组字符串相互转换,java数组与字符串相互转换、整型与字符串相互转换【详解】...

    1.char数组(字符数组)->字符串 可以通过:使用String.copyValueOf(charArray)函数实现. 举例: char[] arr={'a','b','c'}; Strin ...

  9. php指针取数组元素,php实现数组指针操作详解

    本文主要介绍了php数组指针操作.具有很好的参考价值,下面跟着小编一起来看下吧 数组指针的操作: 移动数组指针的操作: Next() 向下 同时会获得当前元素的值. Prev() 向上同时会获得当前元 ...

最新文章

  1. 服务器插显示器黑的,服务器插显示器不显示
  2. QT学习笔记(-): 利用QHttp进行http下载(1)
  3. element ui登录界面_Vue和Element-UI做一个简单的登录页面
  4. 工作中使用jasmine遇到的一个html element和Component绑定属性失去同步的问题
  5. cityscapes数据集_全景分割 UPSNet 源码分析 (1) - 数据格式
  6. VS2013报错:错误:没有与这些操作匹配的《运算符
  7. 手写bind_一次搞定前端“四大手写”
  8. getter 和 setter方法
  9. horizon服务主要模块_Openstack入门篇(十四)之horizon服务的部署与测试
  10. 多进程参数args元组方式与kwargs字典方式
  11. 三层交换及DHCP中继配置
  12. xampp的安装和配置
  13. h3c交换机重启_终于解决H3C交换机reset saved-configuration后不能启动的问题
  14. 如何解读羊毛出在了猪身上的保理业务?
  15. oracle卸载步骤图解,Oracle完全卸载步骤
  16. CISSP-OSG-各章节书面实验整理
  17. 万字+图片解析计算机网络应用层
  18. 机器学习(周志华) 第九章聚类
  19. 查看主机oracle 版本,CentOS下查看Oracle数据库版本
  20. java项目组成与理解

热门文章

  1. input 输入速度和方向判断、搜索功能的延迟请求
  2. 2017.3.11[bzoj2440][中山市选2011]完全平方数
  3. laravel5.2总结--服务提供者,契约(Contracts)
  4. ASP.NET之Ajax系列(三)
  5. 地图结合资料 提供全新网络服务
  6. 帆软报表(FineReport) 的初步学习和使用
  7. 【16】成对使用new和delete时要采取相同形式
  8. 谷歌 Provisional headers are shown 和360急速模式 网络连接错误
  9. CenOS7.4内核升级修复系统漏洞
  10. [HNOI2008]水平可见直线 半平面交