小墨の博客

梦想需要付诸行动,否则只能是梦

PHP 遍历的同时更改数组里面的值

如果我们要在一边遍历的同时,更改数组里面的值,应该这么做

$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

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:508
    • 页面总数:20
    • 分类总数:92
    • 标签总数:208
    • 评论总数:61
    • 浏览总数:225323

    | | |
    | |  Z-Blog PHP