PHP中的&傳值引用的問題,在foreach循環的結果能幫解釋下輸出的結果原理是什麼?,PHP
PHP中的&傳值引用的問題,在foreach循環的結果能幫解釋下輸出的結果原理是什麼?
代碼如下:
<?php
$arr = array('one','two','three');
foreach ($arr as &$value){ echo 'Value:'.$value.'<br />'; }
foreach ($arr as $value){ echo 'Value:'.$value.'<br />'; }
?>
輸出結果:
Value:one
Value:two
Value:three
Value:one
Value:two
Value:two
第一次帶&的foreach並沒有改變數組的內容。。
而是最後一次循環$value引用了數組的最後一個項 (可以測試一下,在第一次循環結束後unset($value),第二次循環的結果就不會有變化),
在你第二個foreach也是使用的$value變量,這才造成了怪異的問題(可以換個變量,比如$val,輸出的數組就不會有變化)。
第二個foreach是賦值給$value,但是這時的$value是引用的數組的最後一個值,
所以
第一次循環把one賦值給了最後一個值,
第二次把two賦值給最後一個,
第三次也就是最後一個已經在第二次循環被賦值為two,所以仍然是two。