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

时间:2023-11-17 17:22:26 

看代码,再做解释

<?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,foreach
0
投稿

猜你喜欢

  • 关于Vue单页面骨架屏实践记录

    2024-05-09 15:14:23
  • python中random随机函数详解

    2022-06-14 22:34:43
  • Python重试库 Tenacity详解(推荐)

    2021-07-07 00:20:09
  • 详解Java使用JDBC连接MySQL数据库

    2024-01-24 18:21:06
  • python生成随机验证码(中文验证码)示例

    2022-07-28 05:41:58
  • sql2005 数据库转为sql2000数据库的方法(数据导出导入)

    2024-01-26 07:38:56
  • Python编程之序列操作实例详解

    2023-05-26 16:08:03
  • python sqlalchemy动态修改tablename两种实现方式

    2023-12-05 06:43:15
  • Python图片的横坐标汉字实例

    2023-09-06 18:59:44
  • Python闭包及装饰器运行原理解析

    2022-12-16 20:59:06
  • python实时监控logstash日志代码

    2021-03-08 07:46:49
  • MySQL中distinct与group by之间的性能进行比较

    2024-01-15 05:01:56
  • Python语言的12个基础知识点小结

    2023-08-23 10:12:07
  • mysql命令提示行连接乱码的解决

    2024-01-14 11:05:20
  • MySQL存储IP地址的方法

    2024-01-23 06:01:02
  • 操作Dom节点实现间歇滚动新闻

    2009-10-16 20:51:00
  • SQL Server 2016 CTP2.2安装配置方法图文教程

    2024-01-18 19:04:29
  • 微信小程序访问mysql数据库流程详解

    2024-01-23 10:34:43
  • 详解ES6之async+await 同步/异步方案

    2023-08-24 11:10:54
  • js+css实现有立体感的按钮式文字竖排菜单效果

    2024-04-22 13:09:42
  • asp之家 网络编程 m.aspxhome.com