一、foreach()循环对数组内部指针不再起作用,在PHP7之前,当数组通过foreach迭代时,数组指针会移动。现在开始,不再如此,见下面代码。。

$array = [0, 1, 2];

foreach ($array as &$val)

{

var_dump(current($array));

}

PHP5运行的结果会打印int(1) int(2) bool(false)

PHP7运行的结果会打印三次int(0),也就是说数组的内部指针并没有改变。

之前运行的结果会打印int(1), int(2)和bool(false)

二、按照值进行循环的时候,foreach是对该数组的拷贝操作

foreach按照值进行循环的时候(by-value),foreach是对该数组的一个拷贝进行操作。这样在循环过程中对数组做的修改是不会影响循环行为的。

$array = [0, 1, 2];

$ref =& $array; // Necessary to trigger the old behavior

foreach ($array as $val) {

var_dump($val);

unset($array[1]);

}

上面的代码虽然在循环中把数组的第二个元素unset掉,但PHP7还是会把三个元素打印出来:(0 1 2)

之前老版本的PHP会把1跳过,只打印(0 2).

三、按照引用进行循环的时候,对数组的修改会影响循环。

如果在循环的时候是引用的方式,对数组的修改会影响循环行为。不过PHP7版本优化了很多场景下面位置的维护。比如在循环时往数组中追加元素。

$array = [0];

foreach ($array as &$val) {

var_dump($val);

$array[1] = 1;

}

上面的代码中追加的元素也会参与循环,这样PHP7会打印"int(0) int(1)",老版本只会打印"int(0)"。

四、对简单对象plain (non-Traversable) 的循环。

对简单对象的循环,不管是按照值循环还是按引用循环,和按照引用对数组循环的行为是一样的。不过对位置的管理会更加精确。

五、对迭代对象(Traversable objects)对象行为和之前一致。

编者按:stackoverflow上面的解释:Traversable object is one that implements Iterator or IteratorAggregate interface。如果一个对象实现了iterator或者IteratorAggregate接口,即可称之为迭代对象。

百万数据php7取出循环_php7关于foreach循环综合问题相关推荐

  1. 百万数据php7取出循环_PHP7带来了哪些重要的变化

    PHP7带来的新东西 1.类型的声明. 可以使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),来声明函数的参数类型与函数返回值. declare(s ...

  2. 百万数据php7取出循环_Thinkphp5 分批批量导出百万条数据记录的Code,不用PHPEXCEL哦!...

    通过phpexcel导出上万条数据,会延迟.内存溢出.程序报错,各种问题出现...届时作者放弃了phpexcel,导出小数据量还是很可行的.下面通过分批导出csv,并压缩至zip中提供下载...废话不 ...

  3. 百万数据php7取出循环_用php处理百万级以上的数据

    用php处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描, ...

  4. php的foreach用法循环组合,php foreach 循环实例 foreach用法

    在PHP中的foreach是用来进行循环对一个数组的所有元素.作者的foreach基本语法如下: FOREACH ($array_variable as $value) { [code to exec ...

  5. oracle for循环遍历数组,foreach循环

    Smarty foreach控制循环次数 1.在 smarty 中数组是经常会用到的,循环遍历数组用 section 或者 foreach ,如何得到数组长度或者判断一个数组个数呢?可以用{$arra ...

  6. 13.PHP中循环结构之foreach循环语句(任务一)

    在PHP中foreach循环语句,常用于遍历数组,一般有两种使用方式:不取下标.取下标. (1)只取值,不取下标 <?phpforeach (数组 as 值){ //执行的任务 } ?> ...

  7. jsp页面c标签循环map , c:foreach 循环map

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. <c:forEach items="${customerMap}" var ...

  8. c语言 for each循环,C#中foreach循环对比for循环的优势和劣势

    前言 循环语句为众多程序员们提供了很大的便利,有while.do...while.for和 foreach.而且foreach语句很简洁,但是它的优点不仅仅在于此,它的效率也是最高的.本文将详细给大家 ...

  9. for-each 循环_C ++中基于范围的循环(类似于for-each循环)

    for-each 循环 C ++中基于范围的循环(增强了循环) (Range-based loop in C++ (enhanced for loop)) for loop is used to ex ...

最新文章

  1. 三亚免税店积分抵现_又变了??三亚免税店的政策又变了~
  2. 2021年4月19日 深圳头条后台开发实习面试(二面)(含总结)
  3. 利用java反射机制,子类从父类拷贝属性--解决信息修改类设计的模式
  4. Jupyter Noteboot 添加kernel 环境
  5. OSSIM中配置网络资产监控
  6. pcl_openmap_OpenMap教程–第1部分
  7. kotlin 两个数字相加_Kotlin程序交换两个数字
  8. Thinkphp3.2在IIS中使用ISAPI_Rewrite去除index.php
  9. 激活navicat提示rsa public key not find的问题
  10. VMware Explore 2022 China,赋能中国企业加速实现云智能
  11. 内存地址重映射的选项_ARM处理器重映射原理的分析与实现
  12. Android录屏技术方案
  13. 异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults
  14. 网络运维系列:GoDaddy Shell DDNS配置
  15. Elasticsearch学习第二篇--常用的几种搜索方式
  16. 计算机的基本组成 教案反思,《计算机系统组成》教学反思
  17. web快速入门之基础篇-html:2、基本标签之标题标签、段落标签、换行标签
  18. 电脑组成部件介绍图解:电脑的硬件组成部分及其作用各是什么?
  19. 折腾一下,Linux Mint 19 下工作
  20. Flutter Bloc构建轻量级MVVM

热门文章

  1. TDW 2019 | 微众银行AI能力融入系统设计 打破医疗信息化困境
  2. 为什么页面显示能动态添加到元素 而打印却没有添加上
  3. 工具管理(资源管理)
  4. 【Docker】笔记小结
  5. 解决80端口占用的问题
  6. CrossOver介绍
  7. 【无限互联】学员作品:面包旅行APP
  8. smart700iev3 程序下载设置_smart line 700ie v3触摸屏下载不了程序-工业支持中心-西门子中国...
  9. python考试题库开发_算法/开发 面试必看! 【python基础】面试题合集
  10. 动态规划(一):0-1背包问题