PHP学习:foreach的深入 和COW(copy-on-write )的验证
来源:互联网 发布:防晒霜 知乎 编辑:程序博客网 时间:2024/05/20 22:35
2016-08-28
foreach的传值和传址
<?php $stu=['tom','jim','cheery']; foreach($stu as $var)//传值 { $var.=$var;//连续定义变量相当于$var=$var.$var; echo $var,'<br>'; } print_r($stu); echo '<hr>'; //out put //tomtom //jimjim //cheerycheery //Array ( [0] => tom [1] => jim [2] => cheery ) $stu=['tom','jim','cheery']; foreach($stu as &$var)//传址 { $var.=$var;//连续定义变量相当于$var.$var echo $var,'<br>'; } print_r($stu); //tomtom //jimjim //cheerycheery //Array ( [0] => tomtom [1] => jimjim [2] => cheerycheery )?>
foreach的本质
遍历数组的本质是在创建一个原数组的副本
//遍历数组的过程://初始化指针==》给值($var)赋值==》给键($key)赋值==》指针下移一位==》重复上一步操作。//遍历数组的本质其实遍历原数组的副本。//当没有对原数组执行写(修改)操作的时候,那么原数组不发生改变;//如果发生修改那么是对原数组精选修改而对遍历所用的数组副本不造成影响。//test1: $arr=array('A','B','C','D','E'); foreach($arr as $key=>$var) { $arr[]='input';//每次遍历都会给$arr的数组增加一个input。 echo $var;//依次输出$arr的值。 echo '<br>'; } print_r($arr); echo '<hr>';//output// A// B// C// D// E// Array ( [0] => A [1] => B [2] => C [3] => D [4] => E [5] => input [6] => input [7] => input [8] => input [9] => input )//从上面的测试中可以看出:虽然每次执行遍历的时候都会在数组中加一个input,但是遍历的结果中并没有出现增加的input//foreach的操作我们可以分解为如下的操作。 //第一次遍历 //$arr_copy=$arr; //reset($arr); //$var=$value;将$arr_copy中的值赋值给$var //$key=$key ;将$arr_copy中的键赋值给$key //next($arr) ;将指针下移一位 //$arr[5]='input';给$arr数组增加一个下标为5的键,并将‘input’赋值给他。 //以此类推...
foreach遍历数组的时候会触发COW…
有关foreach的介绍详见下面文章:
http://php.net/manual/en/control-structures.foreach.php
有关COW的解释详见下面的文章:
http://www.php-internals.com/book/?p=chapt06/06-06-copy-on-write
0 0
- PHP学习:foreach的深入 和COW(copy-on-write )的验证
- linux的COW(Copy-On-Write)
- Copy-on-write(COW)
- COW(copy on write)探析
- Snapshot:COW(copy on write)
- 复合类型中的COW(copy on write)
- 理解 shared_ptr实现copy-on-write(COW)
- Linux系统中的copy-on-write(COW)技术
- COW copy on write linux 开博啦。哈哈
- Copy-On-Write COW 技术简介
- std::string的内存共享和Copy-On-Write技术
- 【转】string的内存共享和Copy-On-Write技术
- std string的内存共享和Copy-On-Write技术
- std::string的内存共享和Copy-On-Write技术
- std::string的内存共享和Copy-On-Write 模式
- std::string的共享内存和Copy-On-Write技术
- std string的内存共享和Copy-On-Write技术
- STL的写时拷贝(Copy-On-Write)
- Axure设计:跳转页面如何设置目标页面的动态面板的状态
- 《士兵突击》经验语录
- leetcode.136.Single Number
- android gridview 去除四周间隙
- 安全操作,幂等操作
- PHP学习:foreach的深入 和COW(copy-on-write )的验证
- Spring In Action 02 ---高级装配
- Redhat Linux 7.2 打开或关闭防火墙
- 二叉树的非递归遍历
- Java虚拟机----类加载器
- kali切换桌面环境
- 软件工程——软件实现
- 20160809,微软8月9日发布9个安全补丁
- 【bzoj1083】【SCOI2005】繁忙的都市