php教程自学网 - 轻松零基础学php视频教程
条幅广告
当前位置: 主页 > PHP7 >

foreach修改

时间:2018-08-22 19:39来源:未知 作者:admin 点击:
一、foreach()循环对数组内部指针不再起作用。 $array = [0, 1, 2]; foreach ($array as $val) { var_dump(current($array)); } PHP7运行的结果会打印三次int(0),也就是说数组的内部指针并没有改变。 之前运行
一、foreach()循环对数组内部指针不再起作用。
$array = [0, 1, 2];
foreach ($array as &$val) 
{
    var_dump(current($array));
}
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接口,即可称之为迭代对象。
(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
相关推荐
  • use 语句
  • PHP 7 可以使用一个 use 从同一个 namespace 中导入类、函数和常量: 实例 实例 /

  • PHP7其他修改
  • NaN和Infinity转为整型的时候,始终为0。 Instead of being undefined and platform-dependent

  • PHP7windows支持
  • 一、核心: 64位版本PHP7原生支持64位整数。 64位版本增加大文件支持。 支持g

  • PHP7INI配置文件修改
  • 核心:移除了asp标签格式的支持。 移除了always_populate_raw_post_data选项。...

  • PHP7新增常量
  • 一、核心 增加了PHP_INT_MIN常量。 二、PCRE 增加了PREG_JIT_STACKLIMIT_ERROR常量。 三、

  • PHP7其他对扩展的修改
  • Mhash不再是一个扩展,使用前需要用function_exists(mhash) 来检查方法是否存在。

  • PHP7修改的函数
  • parse_ini_file()和parse_ini_string()的scanner_mode参数增加了INI_SCANNER_TYPED选项。 unseria

  • PHP7SAPI模块修改
  • FPM: 修复了bug#65933。 Listen = port会监听所有的ip地址,包括IPv6和IPv4。...

  • PHP7新增功能
  • 一、核心 增加了group use语法声明。 增加了null合并运算符??。 64位PHP7字符串长度

  • 其他修改
  • CURL模块:禁止禁用CURLOPT_SAFE_UPLOAD选项,通过curl上传文件必须使用curl_file/CURL