PHP foreach引用&


將以下代碼打印

$variable = ['a', 'b', 'c'];

foreach ($variable as $key => &$value) {

}

foreach ($variable as $key => $value) {

}
echo "<pre />";
var_dump($variable);
echo "<pre />";
#結果
array(3) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  &string(1) "b"
}

打印出來的結果跟預期結果的不一致,這是因為在第一次的foreach中使用了引用,順其而然的$value變成了引用變量,因而$value與 $a[ 2 ]指向了同一個地址空間(共享變量值),在第二個foreach中,不斷的將$arr中的值賦給$value,進而$arr[2]的值也會跟隨者$value的變化而變化,將第二次中的$variable 打印出來的結果

array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> &string(1) "a" }
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> &string(1) "b" }
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> &string(1) "b" } 

$value值與$arr[2]值的變化

image.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM