百万数据php7取出循环_php7关于foreach循环综合问题
一、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循环综合问题相关推荐
- 百万数据php7取出循环_PHP7带来了哪些重要的变化
PHP7带来的新东西 1.类型的声明. 可以使用字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool),来声明函数的参数类型与函数返回值. declare(s ...
- 百万数据php7取出循环_Thinkphp5 分批批量导出百万条数据记录的Code,不用PHPEXCEL哦!...
通过phpexcel导出上万条数据,会延迟.内存溢出.程序报错,各种问题出现...届时作者放弃了phpexcel,导出小数据量还是很可行的.下面通过分批导出csv,并压缩至zip中提供下载...废话不 ...
- 百万数据php7取出循环_用php处理百万级以上的数据
用php处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2.对查询进行优化,应尽量避免全表扫描, ...
- php的foreach用法循环组合,php foreach 循环实例 foreach用法
在PHP中的foreach是用来进行循环对一个数组的所有元素.作者的foreach基本语法如下: FOREACH ($array_variable as $value) { [code to exec ...
- oracle for循环遍历数组,foreach循环
Smarty foreach控制循环次数 1.在 smarty 中数组是经常会用到的,循环遍历数组用 section 或者 foreach ,如何得到数组长度或者判断一个数组个数呢?可以用{$arra ...
- 13.PHP中循环结构之foreach循环语句(任务一)
在PHP中foreach循环语句,常用于遍历数组,一般有两种使用方式:不取下标.取下标. (1)只取值,不取下标 <?phpforeach (数组 as 值){ //执行的任务 } ?> ...
- jsp页面c标签循环map , c:foreach 循环map
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. <c:forEach items="${customerMap}" var ...
- c语言 for each循环,C#中foreach循环对比for循环的优势和劣势
前言 循环语句为众多程序员们提供了很大的便利,有while.do...while.for和 foreach.而且foreach语句很简洁,但是它的优点不仅仅在于此,它的效率也是最高的.本文将详细给大家 ...
- for-each 循环_C ++中基于范围的循环(类似于for-each循环)
for-each 循环 C ++中基于范围的循环(增强了循环) (Range-based loop in C++ (enhanced for loop)) for loop is used to ex ...
最新文章
- 三亚免税店积分抵现_又变了??三亚免税店的政策又变了~
- 2021年4月19日 深圳头条后台开发实习面试(二面)(含总结)
- 利用java反射机制,子类从父类拷贝属性--解决信息修改类设计的模式
- Jupyter Noteboot 添加kernel 环境
- OSSIM中配置网络资产监控
- pcl_openmap_OpenMap教程–第1部分
- kotlin 两个数字相加_Kotlin程序交换两个数字
- Thinkphp3.2在IIS中使用ISAPI_Rewrite去除index.php
- 激活navicat提示rsa public key not find的问题
- VMware Explore 2022 China,赋能中国企业加速实现云智能
- 内存地址重映射的选项_ARM处理器重映射原理的分析与实现
- Android录屏技术方案
- 异常信息:由于内部错误,服务器无法处理该请求。有关该错误的详细信息,请打开服务器上的 IncludeExceptionDetailInFaults
- 网络运维系列:GoDaddy Shell DDNS配置
- Elasticsearch学习第二篇--常用的几种搜索方式
- 计算机的基本组成 教案反思,《计算机系统组成》教学反思
- web快速入门之基础篇-html:2、基本标签之标题标签、段落标签、换行标签
- 电脑组成部件介绍图解:电脑的硬件组成部分及其作用各是什么?
- 折腾一下,Linux Mint 19 下工作
- Flutter Bloc构建轻量级MVVM
热门文章
- TDW 2019 | 微众银行AI能力融入系统设计 打破医疗信息化困境
- 为什么页面显示能动态添加到元素 而打印却没有添加上
- 工具管理(资源管理)
- 【Docker】笔记小结
- 解决80端口占用的问题
- CrossOver介绍
- 【无限互联】学员作品:面包旅行APP
- smart700iev3 程序下载设置_smart line 700ie v3触摸屏下载不了程序-工业支持中心-西门子中国...
- python考试题库开发_算法/开发 面试必看! 【python基础】面试题合集
- 动态规划(一):0-1背包问题