• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > PHP的一个小问题。

PHP的一个小问题。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了php面试问题,php面试常见问题,php程序员的面试问题,php乱码问题,php中文乱码问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:PHP的一个小问题。
描述:

php面试问题,面试php问什么问题,php面试官问题,php程序员面试问题,php常见问题,php utf 8乱码问题,php 安全问题,php乱码问题,php页面乱码问

为什么会这样?为啥前两个下标没引用,而偏偏最后一个用到了,谁能系统的解释一下以及原理。


解决方案1:

这问题前几天面试的时候正好遇到了,因为下面使用的$a还没有被释放掉,还是$array数组中的引用。所以一般使用foreach的引用传值时最好在后面unset一下咯

解决方案2:

弄明白引用与传值的区别,这个问题也就明白了。
在foreach中$a指的就是$array中的元素,通过循环先指向$array[0],然后是$array[1]...,你可以理解为$array中的元素在循环过程中多了一个$a标签,它们是指向同一个值(物理地址)的。所以在foreach中,$array的元素都被引用了,$a = $a这个运算结果反应在$array数组中。
其中当循环到第三次的时候,通过$a
=$a运算,$array[2]的值变为了9,循环结束,但是这是$a还是$array[2]的引用,并没有注销,这是将$a赋值为0,所以$array[2]就变成了0.
所以最终结果就是[1,4,0];

解决方案3:

指针相互影响的原因, 貌似PHP7已经解决了该问题..

PHP5: 
?? $a = array(1,2,3); foreach($a as $v) { var_dump(current($a)) } 
int(2) 
int(2) 
int(2)
?? $a = array(1,2,3); $b=&$a; foreach($a as $v) { var_dump(current($a))} 
int(2) 
int(3) 
bool(false) 
?? $a = array(1,2,3); $b=$a; foreach($a as $v) { var_dump(current($a))} 
int(1) 
int(1) 
int(1) 
PHP7: Doesn’t use/modify array internal pointer anymore 
?? $a = array(1,2,3); foreach($a as $v) { var_dump(current($a)) } 
int(1) 
int(1) 
int(1)
?? $a = array(1,2,3); $b=&$a; foreach($a as $v) { var_dump(current($a))} 
int(1) 
int(1) 
int(1) 
?? $a = array(1,2,3); $b=$a; foreach($a as $v) { var_dump(current($a))} 
int(1) 
int(1) 
int(1) 

摘至鸟哥

解决方案4:

因为foreach完成之后,最后的$a依然是引用的$array[2],但最后执行了$a=0,这里就相当于$array[2]=0(原来应该是$array[2]=9),所以最后的结果是

[1, 4, 0]


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • php问题:代理ip地址如何提取出来
  • 一个PHP正则的问题
  • php正则问题
  • PHP的一个小问题。

相关文章

  • 2017-06-07 请问存在七牛云存储中的文件,搜索引擎不可以收录的对吧
  • 2017-06-07 (python)用scrapy-splash爬取网站为啥iframe下的内容没有被返回
  • 2017-06-07 Python爬虫,做了一个爬取百度贴吧中的数据,每次只能获取每一页的前几个数据,后面的都获取不了?
  • 2017-06-07 (python)django下怎么自实现关联内联关系呢
  • 2017-06-07 王爽汇编2版检测点102感觉答案有误
  • 2017-06-07 python获取PDF文档中的日期
  • 2017-06-07 (golang)goslice问题
  • 2017-06-07 (shell)Python下exec_command'cd/;ll'为什么不执行呢?大神赐教啊
  • 2017-06-07 Python编写自动备份程序出错
  • 2017-06-07 (laravel)php中header头设置无效的原因可能有哪些?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 申请了自定义域名解析,可是有时候下载图片的时候还是比较慢,还能怎么优化,请指教
    • python调用mysql存储过程没有反应
    • 代码雷同检测
    • Sublime正则的问题,清除没用的css。
    • RubySDK生成的token是expired的
    • 菜鸟请教,为什么addax,bx总是error
    • python中的判断语句出错,请求支援,谢谢!
    • tornado如何设置cookie的保留字段的值
    • golang,如何判断一个链接5分钟内无任何消息
    • python爬虫模拟登录网站,总是不成功

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有