PHP中使用foreach时加&符号的用法

Posted 幽篁晓筑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"]

 

以上是关于PHP中使用foreach时加&符号的用法的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis 中 foreach 用法

php中foreach使用引用的陷阱

php中关于&& or 的用法???

[PHP] foreach循环的引用赋值可能导致的问题

PHP中foreach函数用法?

foreach使用方法