当前位置: 首页 > news >正文

b2b网站都有哪些微信视频号小店

b2b网站都有哪些,微信视频号小店,赣州网上房地产信息网,wordpress禁止图片这篇文章也可以在我的博客查看 搞WordPress&#xff0c;难免跟php打交道 然而这弱类型语言实在坑有点多 这不今儿又踩了个大坑直接时间-1&#x1f605; 问题 话不多说直接上代码 <?php $items [1,2];foreach ($items as &$item) {/*empty loop*/} print_r($items)…

这篇文章也可以在我的博客查看

搞WordPress,难免跟php打交道
然而这弱类型语言实在坑有点多
这不今儿又踩了个大坑直接时间-1😅

问题

话不多说直接上代码

<?php
$items = [1,2];foreach ($items as &$item) {/*empty loop*/}
print_r($items);foreach ($items as $item) {/*empty loop*/}
print_r($items);

请问,最后的输出是什么?
答案是:

Array
([0] => 1[1] => 2
)
Array
([0] => 1[1] => 1
)

不是,我啥也没干呢,发生什么事了?
我懂了,一定是我的/*empty loop*/注释把数据改了!(不是)

原因

原因其实有二,但凡php没那么“强大”都不会造成这个问题

  1. php支持“引用”,而非指针
  2. php的变量作用域由定义开始生效直到函数/文件结束,不存在代码块为基础的局部作用域(花括号)

同时满足这俩条件的语言好像还真蛮少的
因此我这不就暴毙了嘛

  1. 首先第一个循环,使用引用对$item赋值
  • 因此循环结束后,$item事实上是最后一个元素的引用
  1. 然后,循环结束后,$item没有因为循环结束而终止生命周期
  • 因此第二次循环的$item事实上还是指向最后一个元素的引用
  1. 最后,第二次循环没有使用引用赋值
  • 因此改变的不是引用指向,而是引用当前指向的值

因此,最后一个元素在第二次循环中被赋值了n次

小测试

如果$items=[1,2,3],最后的结果是什么?
答案是:Array([0] => 1 [1] => 2 [2] => 2)

这个错误造成的不是第二次输出全部重复,而只是第n个元素被修改成n-1的值
跟着循环走一遍就很好理解:

  1. 第一步$item = $items[0] === 1,此时$items[2] === $item === 1
  2. 第二步$item = $items[1] === 2,此时$items[2] === $item === 2
  3. 第三步$item = $items[2] === 2(因为上一步)

谢谢你,我的PHP😅

参考资料

PHP Foreach Pass by Reference: Last Element Duplicating? (Bug?)

http://www.ds6.com.cn/news/50622.html

相关文章:

  • 网站做压测今天有什么新闻
  • 地下城钓鱼网站如何做做电商如何起步
  • 临朐网站制作企业线上培训平台有哪些
  • 电商网站商品表设计方案交换神器
  • 凡客官网 电脑版东莞百度网站排名优化
  • 西安网站设计培训试听十大跨境电商erp排名
  • 网站浏览器兼容测试网络销售技巧和话术
  • 电脑编程与网站建设陕西seo快速排名
  • 装修设计效果图大全免费搜索引擎优化的例子
  • 云南做网站要多少钱静态网站开发
  • 寺院的网站怎么做营销策划主要做些什么
  • 西安十强互联网站建设公司创建网站怎么创
  • 能源网站建设公司一周热点新闻
  • 如何做产品网站推广seo薪资
  • 网站建设捌金手指下拉三灰色项目推广渠道
  • 子公司网站备案百度怎么推广自己的视频
  • asp 做网站的好处抖音黑科技引流推广神器
  • 佛山网站建设网络公司爱站关键词挖掘
  • 做网站公司属于什么行业网络营销外包
  • 湖南网站建设什么优化
  • 郑州网站建设代运营苏州seo服务
  • 网站改版做301是啥意思 换域名百度 个人中心首页
  • 搜索排名优化公司引擎seo如何优化
  • lua做网站网络营销推广策划的步骤
  • 济南市人民政府门户网站专业关键词优化平台
  • 极简wordpress主题、成都搜狗seo
  • 免费咨询医师天津企业seo
  • 邢台各种类型网站建设售后完善seo外链购买
  • 哪些网站可以做淘宝店招引流推广的句子
  • 吉林省吉林市丰满区优化大师怎么强力卸载