1. 程式人生 > >PHP中使用foreach時加&符號的用法

PHP中使用foreach時加&符號的用法

foreach時加&符號:遍歷的同時改變原陣列即修改資料或者增加資料。

$arr = ['a', 'b', 'c'];
foreach ($arr as $key => &$value) {
    $value = $value . '111';
}
echo json_encode($arr);      // ["a111","b111","c111"],這裡改變了原來陣列的值

使用&可能出現的問題:

$arr = ['a', 'b', 'c'];
foreach ($arr as $key => &$value) {
    $value 
= $value . '111'; } foreach ($arr as $key => $value) { $value = $value . '222'; } echo json_encode($arr); // ["a111","b111","b111222222"]

這是由於在使用賦值引用傳遞之後沒有釋放$value的值,所以會影響第二個foreach的使用。可以使用unset($value)釋放變數。

$arr = ['a', 'b', 'c'];
foreach ($arr as $key => &$value) {
    $value 
= $value . '111'; } unset($value); // 釋放$value的引用傳遞 foreach ($arr as $key => $value) { $value = $value . '222'; } echo json_encode($arr); // ["a111","b111","c111"]