今天遇到一个很奇怪的问题:
后来折腾了一番,之后写了个实验代码,来记录今天的发现。
<?php
header('Content-type:text/html;charset=utf-8');
$arrOne = array(
'aa'=>'11',
'bb'=>'22',
'cc'=>'33',
'dd'=>'44',
);
print_r($arrOne);
foreach($arrOne as &$value){
}
$arrTwo = array(
'ee'=>'55',
'ff'=>'66',
'gg'=>'77',
'hh'=>'88',
);
foreach($arrTwo as $value){
if('77'==$value){
break;
}
}
echo '<br/>';
print_r($arrOne);
?>
输出的结果是:
Array ( [aa] => 11 [bb] => 22 [cc] => 33 [dd] => 44 )
Array ( [aa] => 11 [bb] => 22 [cc] => 33 [dd] => 77 )
这个跟php的引用有关,
在第一次遍历数组的时候将变量 $value和$arrOne的最后一个值进行了关联映射,
后来遍历$arrTwo数组的时候,将$arrTwo数组中的值轮番放入到了$value中,
但是$value变量和$arrOne变量的最后一个值是同一块内存区域,
结果就导致了,后来的$arrTwo的变量将$arrOne变量的最后一个变量覆盖掉了。