PHP foreach 引用問題

代碼如下

<?php

$arr = [1,2,3];

foreach($arr as &$value) {

}

foreach($arr as $value) {
    print_r($arr);
}

輸出結果

Array
(
    [0] => 1
    [1] => 2
    [2] => 1
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 2
)
Array
(
    [0] => 1
    [1] => 2
    [2] => 2
)

原因
第一個循環 $value 使用了引用
第一次循環時 valuevalue 是arr[0]的引用
第二次循環時 valuevalue 是arr[1]的引用
第二次循環時 valuevalue 是arr[2]的引用

第二個循環 valueunsetvalue 沒有被unset掉 它還是arr[2]的引用
第一次循環時 $arr[2] = $arr[0] = 1
第二次循環時 $arr[2] = $arr[1] = 2
第二次循環時 $arr[2] = $arr[2] = 2

溫馨提示
使用foreach 引用時爲了不必要的麻煩 建議使用unset掉引用的變量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章