php foreach循环中使用引用的问题


Posted in PHP onNovember 06, 2013

看代码,再做解释

<?php 
$array=array('a','b','c','d'); 
foreach($array as $key=>$val){ 
    //do something 
} 
echo $val;//输出d 
echo $kay;//输出3 
$val='e'; 
print_r($array);//输出Array ( [0] => a [1] => b [2] => c [3] => d ) 
?>
 

在foreach循环中,当循环结束后,$key和$val变量都不会自动释放掉。值会被保留下来。
当foreach使用引用的情况下,会出现如下的情况,需要注意。
<?php 
$array=array('a','b','c','d'); 
foreach($array as $key=>&$val){//使用引用 
    //do something 
} 
echo $val;//输出d 
echo $kay;//输出3 
$val='e'; 
print_r($array);//输出Array ( [0] => a [1] => b [2] => c [3] => e ) 
?>
 

当$val变量使用&引用后,当执行foreach循环结束后,$val指向了和$arrar[3]相同的内存地址。
当foreach循环结束后$val变量还是存在的,所以在foreach循环结束后改变$val的值,就相当于改变了$arrar[3]的值。
PHP 相关文章推荐
PHP函数utf8转gb2312编码
Dec 21 PHP
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
解析func_num_args与func_get_args函数的使用
Jun 24 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
分享一则PHP定义函数代码
Feb 26 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
浅谈本地WAMP环境的搭建
May 13 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
Jan 05 PHP
PHP导出Excel实例讲解
Jan 24 PHP
PHP获取MySQL执行sql语句的查询时间方法
Aug 21 PHP
php常用字符串查找函数strstr()与strpos()实例分析
Jun 21 PHP
PHP底层运行机制与工作原理详解
Jul 31 PHP
php用正则表达式匹配中文实例详解
Nov 06 #PHP
php引用传值实例详解学习
Nov 06 #PHP
php二维数组排序详解
Nov 06 #PHP
PHP Curl多线程原理实例详解
Nov 06 #PHP
php二维数组用键名分组相加实例函数
Nov 06 #PHP
php不用正则验证真假身份证
Nov 06 #PHP
php 中文字符串首字母的获取函数分享
Nov 04 #PHP
You might like
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
2020/07/13 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
让回调函数 showResponse 也带上参数的代码
2007/08/13 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
javascript读写json示例
2014/04/11 Javascript
防止登录页面出现在frame中js代码
2014/07/22 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
2016/05/28 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
聊一聊Vue.js过渡效果
2016/09/07 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
《javascript少儿编程》location术语总结
2018/05/27 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python 闭包的使用方法
2017/09/07 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
python多线程分块读取文件
2019/08/29 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
大学生就业求职信
2014/06/12 职场文书
债务纠纷委托书
2014/08/30 职场文书
计算机实训报告总结
2014/11/05 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
python自动化测试之Selenium详解
2022/03/13 Python
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript
Python Matplotlib绘制动画的代码详解
2022/05/30 Python