博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php foreach循环中的变量
阅读量:5275 次
发布时间:2019-06-14

本文共 1103 字,大约阅读时间需要 3 分钟。

使用foreach的时候出现了一个奇怪的现象,其中一个数组变量的最后一个值莫名其妙被修改了,查看php手册foreach说明发现

Warning

数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用  来将其销毁。

有这样的警告。使用unset 方法或使用其他变量名称。

例如

$a=[1,2];foreach($a as $key=>$value){    $a[$key]=$value+1;}echo $value;//输出 2

 如果在$a中使用了指针,则会影响后面同名的变量的值,结果如下:

$a=[1,2];$b=[3,4];foreach($a as $key=>&$value){    $a[$key]=$value+1;}print_r($a);foreach($b as $value){    $value++;}print_r($a);print_r($b);输出如下Array(    [0] => 2    [1] => 3)Array(    [0] => 2    [1] => 5)Array(    [0] => 3    [1] => 4)

 如果都使用指针或使用unset,则不受影响

$a=[1,2];$b=[3,4];foreach($a as $key=>&$value){    $a[$key]=$value+1;}print_r($a);foreach($b as &$value){    $value++;}print_r($a);print_r($b);输入如下Array(    [0] => 2    [1] => 3)3Array(    [0] => 2    [1] => 3)Array(    [0] => 4    [1] => 5)

 使用unset

$a=[1,2];$b=[3,4];foreach($a as $key=>&$value){    $a[$key]=$value+1;}print_r($a);unset($key,$value);foreach($b as $key=>$value){    $b[$key]=$value+1;}print_r($a);print_r($b);输出如下Array(    [0] => 2    [1] => 3)Array(    [0] => 2    [1] => 3)Array(    [0] => 4    [1] => 5)

 

转载于:https://www.cnblogs.com/joystrong/p/9053900.html

你可能感兴趣的文章
Linux安装/升级pip
查看>>
shell 输入输出重定向
查看>>
maven工程搭建
查看>>
【leetcode 简单】第十一题 搜索插入位置
查看>>
AS3中 is,as,typeof的区别 .
查看>>
排序算法总结
查看>>
Android 开发笔记___初级控件之实战__计算器
查看>>
工具类--常量类
查看>>
关于hbase的read操作的深入研究 region到storefile过程
查看>>
《浪潮之巅》读书笔记(中)
查看>>
Codeforces 989C (构造)
查看>>
[zz] C++智能指针循环引用解决
查看>>
用Navicat连接Oracle数据库时报错ORA-28547:connection to server failed, probable Oracle Net admin error...
查看>>
PHP之PHP文件引用详解
查看>>
手脱ASProtect v1.23 RC1(无Stolen Code)
查看>>
python 解析XML
查看>>
websocket vs keep-live
查看>>
js 调用父窗口的方法
查看>>
JSONP的诞生、原理及应用实例
查看>>
oracle时间运算
查看>>