这篇文章也可以在我的博客查看 搞WordPress,难免跟PHP打交道 然而这弱类型语言实在坑有点多 这不今儿又踩了个大坑直接时间-1😅 问题 话不多说直接上代码
搞WordPress,难免跟PHP打交道
然而这弱类型语言实在坑有点多
这不今儿又踩了个大坑直接时间-1😅
话不多说直接上代码
php$items = [1,2];foreach ($items as &$item) {}print_r($items);foreach ($items as $item) {}print_r($items);
请问,最后的输出是什么?
答案是:
Array( [0] => 1 [1] => 2)Array( [0] => 1 [1] => 1)
不是,我啥也没干呢,发生什么事了?
我懂了,一定是我的注释把数据改了!(不是)
原因其实有二,但凡php没那么“强大”都不会造成这个问题
同时满足这俩条件的语言好像还真蛮少的
因此我这不就暴毙了嘛
$item
赋值$item
事实上是最后一个元素的引用$item
并没有因为循环结束而终止生命周期因此,最后一个元素在第二次循环中被赋值了n次
如果$items=[1,2,3]
,最后的结果是什么?
答案是:Array([0] => 1 [1] => 2 [2] => 2)
这个错误造成的不是第二次输出全部重复,而只是第n
个元素被修改成n-1
的值
跟着循环走一遍就很好理解:
$item = $items[0] === 1
,此时$items[2] === $item === 1
$item = $items[1] === 2
,此时$items[2] === $item === 2
$item = $items[2] === 2
(因为上一步)谢谢你,我的PHP😅
PHP Foreach Pass by Reference: Last Element Duplicating? (Bug?)
--结束END--
本文标题: php灵异事件,啥都没干数据变了?
本文链接: https://lsjlt.com/news/440372.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0