码迷,mamicode.com
首页 > Web开发 > 详细

PHP foreach引用

时间:2017-08-04 00:30:29      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:foreach   引用   image   for   而不是   echo   结果   family   highlight   

PHP  foreach引用

首先,上代码

$arr=[1,2,3,4,5,6];
foreach ($arr as $key => &$value) {
if($value==4){
unset($arr[$key]);
}
}
foreach ($arr as $key => $value) {
echo $value;
}

各位认为echo的结果会是什么?你可能会很快算出结果为 ‘1,2,3,5,6’,但是,结果会有点小意外,各位不妨输出一下 结果会是‘1,2,3,5,5’。那么问题来了,为什么?

那么下面我们来解释一下:

$value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。

如果我们直接将第一次的结果直接输出,结果不会发生变化,会是1,2,3,4,5,6’;

当我们第二次foreach循环时此时第一次循环对$value最后的引用还在,所以当我们第二次用$value执行后结果会发生变化。

解决办法:1、在第一次foreach循环完成后unset($value),取消掉引用;2、在第二次循环时不用$value变量换成一个其他任意变量都可以;

 

$arr=[1,2,3,4,5,6];
foreach ($arr as $key => &$value) {
	if($value==4){
		unset($arr[$key]);
	}
	//如果没有unset($value),$value仍然是对最后一项的引用
	
}
foreach ($arr as $key => $value) {
//$arr [5]将会更新每个值$value
echo $value;
//直到最后,倒数第二个
}

 技术分享

 

PHP foreach引用

标签:foreach   引用   image   for   而不是   echo   结果   family   highlight   

原文地址:http://www.cnblogs.com/juedui-xiaoliu/p/7282709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!