foreach陷阱

wzx2002發表於2021-12-02
<?php

$nums = [1, 2, 3];
foreach ($nums as &$num) {
    $num += 1;
}
unset($num);
var_dump($nums); // 2,3,4

foreach ($nums as $num) {
    echo $num . "\n"; // 2,3,3
}
var_dump($nums); // 2,3,3

/**
 * 以上的原因,因為 &$num 沒有進行銷燬
 * 陣列最後應該元素的$num引用在迴圈後仍然會保留,所以建議unset掉
 */
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章