each 函数用法简介

验证each 函数对数组指针的操作影响

个人小结

each 函数简介

(PHP 4, PHP 5, PHP 7)

each — 返回数组中当前的键/值对并将数组指针向前移动一步

array each ( array &$array )

返回 array 数组中当前指针位置的键/值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为0,1,key和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。

如果内部指针越过了数组的末端,则 each() 返回 FALSE。

通常在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用 reset()。

验证each 函数对数组指针的操作影响

测试环境:

OS : CentOS 6.5

PHP: php 5.6

运行模式: cli

DEMO 1: 数组内部指针越过末端再次执行each返回false

1 <?php

2 /**

3 * @description: php each 循环

4 *

5 * @author : snow wolf

6 *

7 * @date : 2016-07-19

8 */

9

10 /* each 作用是返回当前数组的键值对,并将当前数组的指针向下移动一步,若内部指针越过了数组的末端返回false */

11

12 $arr = range(1,2);

13

14 while($list = each($arr))

15 {

16 var_dump($list);

17 sleep(1);

18 }

19

20 //因数组指针到达末端,返回false 所以未执行 第二次循环

21 while($list = each($arr))

22 {

23 var_dump($list);

24 sleep(1);

25 }

26

27

28 echo '指针是否越过数组末端: ';

29 var_dump(each($arr));

30 2

执行结果:

/data/phpLoop/each.php:16:

array(4) {

[1] =>

int(1)

'value' =>

int(1)

[0] =>

int(0)

'key' =>

int(0)

}

/data/phpLoop/each.php:16:

array(4) {

[1] =>

int(2)

'value' =>

int(2)

[0] =>

int(1)

'key' =>

int(1)

}

指针是否越过数组末端: /data/phpLoop/each.php:29:

bool(false)

DEMO2: 验证,数组赋值是否会重置原来的数组指针

$tmpArr = $arr;

33

34 while($list = each($arr))

35 {

36 var_dump($list);

37 sleep(1);

38 }

39 echo '数组赋值测试指针是否越过数组末端: ';

40 var_dump(each($arr));

执行结果:

/data/phpLoop/each.php:35:

array(4) {

[1] =>

int(1)

'value' =>

int(1)

[0] =>

int(0)

'key' =>

int(0)

}

/data/phpLoop/each.php:35:

array(4) {

[1] =>

int(2)

'value' =>

int(2)

[0] =>

int(1)

'key' =>

int(1)

}

\n 数组赋值测试指针是否越过数组末端:

/data/phpLoop/each.php:42:

array(4) {

[1] =>

int(1)

'value' =>

int(1)

[0] =>

int(0)

'key' =>

int(0)

}

DEMO3: 全局化 arr 数组,无形参,无传值,测试是否重置指针

/*全局化 arr 数组,无形参,无传值,测试是否重置指针*/

48 function doEach()

49 {

50 global $arr;

51 while($list = each($arr))

52 {

53 var_dump($list);

54 sleep(1);

55 }

56

57 }

58

59 doEach();

60 doEach();

61

62 echo '\n 函数调用测试指针是否越过数组末端: ';

63 var_dump(each($arr));

执行结果:

/data/phpLoop/each.php:53:

array(4) {

[1] =>

int(1)

'value' =>

int(1)

[0] =>

int(0)

'key' =>

int(0)

}

/data/phpLoop/each.php:53:

array(4) {

[1] =>

int(2)

'value' =>

int(2)

[0] =>

int(1)

'key' =>

int(1)

}

\n 函数调用测试指针是否越过数组末端: /data/phpLoop/each.php:63:

bool(false)

DEMO4: 直接检测 函数方式,是否越过数组末端

/*直接检测 函数方式,是否越过数组末端 */

66

67 function funEach($arr)

68 {

69 while($list = each($arr))

70 {

71 var_dump($list);

72 sleep(1);

73 }

74 }

75

76 funEach($arr);

77 funEach($arr);

78

79 echo '\n 函数直接调用测试指针是否越过数组末端: ';

80 var_dump(each($arr));

执行结果:

/data/phpLoop/each.php:71:

array(4) {

[1] =>

int(1)

'value' =>

int(1)

[0] =>

int(0)

'key' =>

int(0)

}

/data/phpLoop/each.php:71:

array(4) {

[1] =>

int(2)

'value' =>

int(2)

[0] =>

int(1)

'key' =>

int(1)

}

/data/phpLoop/each.php:71:

array(4) {

[1] =>

int(1)

'value' =>

int(1)

[0] =>

int(0)

'key' =>

int(0)

}

/data/phpLoop/each.php:71:

array(4) {

[1] =>

int(2)

'value' =>

int(2)

[0] =>

int(1)

'key' =>

int(1)

}

\n 函数直接调用测试指针是否越过数组末端: /data/phpLoop/each.php:80:

array(4) {

[1] =>

int(1)

'value' =>

int(1)

[0] =>

int(0)

'key' =>

int(0)

}

个人小结

在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元,但如果此时对当前数组赋值则会重置原来的数组指针,因此若在循环中需小心使用each 勿赋值,否则将会导致无限循环。

php each 指针,PHP each() 函数用法简介相关推荐

  1. Matlab中 intlinprog函数用法简介

    Matlab中 intlinprog函数用法简介 本来想要自己亲手写一遍的,发现了一优质博文基本上跟我做过的例题大差不差,所以就直接放上链接. 参考链接 https://www.cnblogs.com ...

  2. 数模--0-1规划问题~Matlab中 intlinprog函数用法简介

    1. intlinprog介绍 intlinprog是matlab中用于求解混合整数线性规划(Mixed-integer linear programming)的一个函数,用法基本和linprog差不 ...

  3. js 正则表达式奇偶字符串替换_Python中的正则表达式及其常用匹配函数用法简介...

    今 日 鸡 汤 此曲只应天上有,人间难得几回闻. /1 前言/ 这次给大家主要是介绍Python中的正则表达式,及其相关函数的基本使用方法,并且捎带一些正则表达式给我们带来的便利. /2 简介/ Py ...

  4. PHP中ini_set和ini_get函数用法简介

    为什么80%的码农都做不了架构师?>>>    php中的ini_set函数是php自带的用来修改设置php.ini配置文件的函数,用这个函数很方便,不用去手动修改php.ini文件 ...

  5. strip()函数用法简介

    line.strip(s) line为被操作的字符串,s为要被删掉的字符 该函数对字符串操作规则如下: 功能:删除line中开头和结尾处的字符s 示例: s作为要被删减的字符,其内部顺序并不重要. 即 ...

  6. Python eval函数用法简介

    https://blog.csdn.net/qq_29883591/article/details/53443062

  7. MSSQL Sql加密函数 hashbytes 用法简介

    原文:MSSQL Sql加密函数 hashbytes 用法简介 转自:http://www.maomao365.com/?p=4732 一.mssql sql hashbytes 函数简介 hashb ...

  8. c++中的fork函数_linux c语言 fork() 和 exec 函数的简介和用法

    linux c语言 fork() 和 exec 函数的简介和用法 假如我们在编写1个c程序时想调用1个shell脚本或者执行1段 bash shell命令, 应该如何实现呢? 其实在<stdli ...

  9. c语言使用free释放指针报错,C语言中的free函数用法执行机制分析

    free函数是C语言或者C++程序语言的常用函数,那么free函数有什么用途呢?free函数又怎么用呢?C语言中的free函数用法执行机制分析,一起来看看free内部的机制以及和delete的对比分析 ...

  10. 函数指针及其定义和用法

    函数指针及其定义和用法 1.什么是函数指针 如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址.而且函数名表示的就是这个地址.既然是 ...

最新文章

  1. 使用Android Studio新建Project并建立多个module
  2. Java 高级 --- 多线程快速入门
  3. python3 beautifulsoup 表格_[Python3爬虫]Beautiful Soup解析库
  4. php __tostring 与 tostring
  5. MyBatis 配制文件层次表
  6. mysql 恢复root用户_mysql误删root用户恢复方案
  7. Pytorch 为什么每一轮batch需要设置optimizer.zero_grad
  8. c++ 工厂模式_大连中山融雪剂工厂自营工厂批发
  9. Java学习代码合集
  10. 2019每特教育蚂蚁课堂-Java互联网微服务架构面试宝典v1
  11. matlab符号运算报错,matlab符号运算符
  12. 2021年中国程序员薪资和生活现状调查:年薪5-25万之间占比66.3%
  13. Vue项目中引用‘阿里巴巴字体图标库iconfont’
  14. 裸金属服务器是什么?裸金属服务器能用来干啥
  15. 虚幻引擎(24)-2D动画序列
  16. 3-Go并发编程与协程Goroutine
  17. win10系统nfs服务器搭建
  18. 【NOIP2012DAY1】国王游戏
  19. leetcode 974 Subarray Sums Divisible by K
  20. 直播回顾 | 第四期直播课堂:5G消息在工业领域的应用分享

热门文章

  1. java飞机订票系统实例_航空客运订票系统JAVA课程设计
  2. mysql的cnf配置文件全解析
  3. 【秋招】搜狐游戏_数据分析岗_面试题整理
  4. docker限制cpu、内存使用
  5. css3图片淡出淡入怎么做,css3图像淡入淡出(css3 image fadein)
  6. WinHTTP Web Proxy Auto-Discovery Service 服务处于 停止 状态
  7. 互斥锁、自旋锁、读写锁和文件锁
  8. 候客点选在哪大数据说了算 申城推广简易出租车候客站点
  9. nosqlbooster 延长试用日期
  10. 1.2 信息安全标准与规范