奇怪的问题?php数组引用后值发生改变作者:luke

<?php
$items = array('a','b','c'); 
foreach($items as &$item){
    $item .= '4'; 
} 
foreach($items as $item){
    echo $item,PHP_EOL; 
}
输出的结果是a4,b4,b4而非a4,bc4,c4为什么呢?
因为在第一个fro次循环最终结束后,$item的值为&items[2]。
而在第二个循环时,由于再次用了$item这个变量,会有变化:
第1次时,$item(即$itmes[2])的值成了$items[0],即a4,此时数组为('a4','b4','a4');
第2次时,$item(即$items[2])的值成了$items[1],即b4;此时数组为('a4','b4','b4');
第3次时,$item(即$items[2])的值成了$items[2],即b4;此时数组为('a4','b4','b4');
注: https://blog.csdn.net/zhaoliang831214/article/details/51265084
$numbers=array(1,2,3);
foreach($numbers as &$number){
    $number *=$number; 
}
$number =0; 
echo $numbers[0]," ", $numbers[1]," ", $numbers[2];


时间:2018-3-23 分类:练习