如果我们要在一边遍历的同时,更改数组里面的值,应该这么做
$a = [2, 4, 8];
echo '分割线-----------' . PHP_EOL;
foreach ($a as &$value) {
$value = $value * 10;
}注意 $value 变量前有个&符号,代表将遍历到当前值的引用赋值给$value,如果不写&则赋值操作就会无效!!!
注意&使用后,如果继续对$a进行遍历查看值:
$a = [2, 4, 8];
foreach ($a as $value) {
echo "value:" . $value . PHP_EOL;
}
echo '分割线-----------' . PHP_EOL;
foreach ($a as &$value) {
$value = $value * 10;
}
unset($value);// & 引用赋值后必须将该值销毁,以便接下来继续使用 $value 这个变量
foreach ($a as $value) {
echo "value:" . $value . PHP_EOL;
}此时输出结果:
value:2 value:4 value:8 分割线----------- value:20 value:40 value:80
如果不使用unset() 将其销毁,则输出结果为:
value:2 value:4 value:8 分割线----------- value:20 value:40 value:40 // 注意这里不是80
这个问题的解决办法是 PHP 官方文档指出的:
Warning: 数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。
本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work
尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。
GitHub登录