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"]

 

相关文章