位置: 编程技术 - 正文

简单了解PHP编程中数组的指针的使用(简单了解php编程软件)

编辑:rootadmin

推荐整理分享简单了解PHP编程中数组的指针的使用(简单了解php编程软件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php编程技术,简单了解php编程语言,php编程入门指南,php 编程,简单了解php编程软件,php编程技术,简单了解php编程教程,简单了解php编程语言,内容如对您有帮助,希望把文章链接给更多的朋友!

要使用数组中的元素,就需要数组的定位。定位的实现需要借助数组指针来完成。PHP中有很多函数可以移动数组指针。下面将给大家介绍几个。

将指针移动到下一个数组位置next()

next()函数返回紧接着放在当前数组指针下一个位置的数组值。其形式如下:

以下是一个例子:

还可以将指针前移,也可以直接移动到数组的开始和结尾位置。

将指针移动到前一个数组位置prev()

prev()函数返回位于当前指针前一个位置的数组值,如果指针本来就位于数组的第一个位置,则返回false。其形式如下:

prev()的用法与next()相同,例子就省略了。

将指针移到第一个数组位置reset()

reset()函数用于将数组指针设置回数组的开始位置。其形式如下:

如果需要在脚本中多次查看或处理一个数组,就经常使用这个函数,另外这个函数还经常在排序结束时使用。

简单了解PHP编程中数组的指针的使用(简单了解php编程软件)

将指针移动到最后一个数组位置end()

end()函数将指针移动到数组的最后一个位置,将返回最后一个元素。其形式如下:

下面的例子展示了如果获取第一个和最后一个数组值:

对于数组作为参数在函数间传递时又存在这样一个规律:我们知道,函数调用时,系统会将实参copy一份赋值给形参(引用调用除外),而对于数组,不仅仅 copy了实参的值,而且还copy了实参数组当前内部指针的位置。如果实参内部指针的位置指向了数组末尾,那么系统会将形参的内部指针重置,指向形参数 组的第一个单元;如果实参内部指针的位置不在数组末尾,即指向了有效的单元,那么系统会将形参的数组指针位置与实参的数组指针指向值相同的数组单元。

如果不做 $arr['var6'] = 6 这一步操作,6个变量($var1-$var6)都将有值,因为在each之后,数组指针已经指向了数组的末尾,那么在调用函数 func()时,系统会重置 $arrtmp的数组指针,将其指向第一个元素。但是在进行 $arr['var6'] = 6这步操作之后,一切就改变了,这一个操作让$arr的数组指针由原来指向一个NULL变成了一个有效值(说明一下,赋值前后,数组指针指向的地址单元一 直是没有变化的,只不过是赋值前,那个地址单元什么也没有,而赋值之后变成了6)。这就使得$arr的数组指针指向了一个有效的单元,那么在调用函数 func()时,系统是不会重置$arrtmp的数组指针的,$arrtmp的数组指针将会跟$arr的数组指针一样,指向他自己的最后一个单元。而 each函数又是从当前数组指针的位置开始工作的。因此each函数操作的第一个结果的返回值就是数组$arrtmp的最后一个元素了,它将数组指针再向下移动一位,while循环到此结束,因此$arrtmp['var1']-$arrtmp['var5']都没有被遍历到,最终导致$var1-$var6为NULL。

数组在赋值的过程中,赋值数组和被赋值数组各自数组指针的变化情况。 先给出一条结论,然后我们在用代码来证明这个结论吧。$arrtmp=$arr;在这个赋值表达式中我把$arr叫做赋值数组,把$arrtmp叫做被赋值数组。数 组在赋值时,如果赋值数组的数组指针已经指向了数组末尾,则赋值之后赋值数组的数组指针会被重置,指向数组第一个元素;如果在赋值时,赋值数组的数组指针 没有指向数组末尾,而是指向了任何一个有效的数组元素,那么在赋值之后赋值数组的数组指针是不会被重置的,而是保留其原来指向的元素。在赋值之后,被赋值 数组不仅有了赋值数组的值,而且赋值数组的数组指针指向了那个元素,被赋值的数组也会指向自己中值相同的那个元素。

demo1:

demo1 的执行结果是:int(5) int(5) int(5) 。从这个结果可以看出,赋值前后$arr的数组指针位置没有发生任何变化,$arr1不仅值跟$arr相同,而且数组指针所指向的元素值也是相同的。现在 用上述结论来解释这个结果,在while循环中,有一个if判断语句,目的是不让$arr的数组指针指向数组末尾,而是保留在一个有效的位置。 在$value=4时会跳出循环,而each这个函数会将数组指针向前移动一位,这就导致了$arr的数组指针指向了第5个元素,所以在赋值之 前,current($arr)的结果是5,赋值之后,由于在赋值之前$arr的当前指针并没有指向末尾,因此在赋值之后不会将$arr的数组指针进行重 置,而是保留了其原有的位置,因此在赋值之后使用current($arr)的结果仍然是5。赋值时$arr1不仅获得了$arr的值,而且数组指针指向 的元素和$arr的相同,二者都是5。

demo2中我们将 if($value == 4) break; 这一句注释掉了,目的很简单,就是通过each将$arr的数组指针位置指向数组末尾。

demo2 的执行结果:bool(false) int(1) bool(false) 。如果数组指针对应的元素为0,"",或者不是一个有效的值时,current函数会返回false,$arr的值中没有为0或者""的情况,因此可以断 定是因为数组指针指向了一个无效的元素而导致current返回了一个false。换句话说就是可以确定在while循环完成之后,$arr的数组指针已 经指向了数组的末尾。所以我们看到在赋值之前current($arr)的值是false,而赋值之后current($arr)的值变成了1,说明赋值 之后$arr的数组指针被重置了,指向了数组的第一个元素。current($arr1)的值为false,说明赋值之后$arr1让然保留了赋值之 前$arr的数组指针指向的元素。

通过demo1和demo2就可以证明上述结论了。

因此为了在遍历数组时不受数组指针的影响,最好在使用each()函数之前或者之后调用函数reset()将数组指针重置。这样就可以避免上述问题的发生了。另外还有一个操作数组指针的函数prev(),它的作用是将数组指针当前的位置后退一位,它也需要注意一点,就是如果数组指针已经指向数组末尾,那么使它就得不到想要的结果了。

顺便说一下foreach这个函数,使用foreach函数来遍历数组时,它会重置数组指针,将其指向数组的第一个元素。必须注意的是foreach操作的对象是对你要遍历的数组的copy值,而不是遍历数组本身。

深入解析PHP中foreach语句控制数组循环的用法 foreach是PHP中很常用的一个用作数组循环的控制语句。因为它的方便和易用,自然也就在后端隐藏着很复杂的具体实现方式(对用户透明)今天,我们就来

使用Huagepage和PGO来提升PHP7的执行性能 HugepagePHP7刚刚发布了RC4,包含一些bug修复和一个我们最新的性能提升成果,那就是HugePageFyPHPTEXTsegment,通过启用这个特性,PHP7会把自身的TEXT段(执行体

PHP接收json 并将接收数据插入数据库的实现代码 最近有一个需求,前端向后台提交json,后台解析并且将提交的值插入数据库中,难点1、php解析json(这个不算难点了,网上实例一抓一大把)2、解析json

标签: 简单了解php编程软件

本文链接地址:https://www.jiuchutong.com/biancheng/275600.html 转载请保留说明!

上一篇:PHP中对数组的一些常用的增、删、插操作函数总结(php中数组的概念)

下一篇:深入解析PHP中foreach语句控制数组循环的用法(php fork)

  • 无法收回的应收账款可以税前扣除吗
  • 固定资产抵扣增值税何时开始
  • 价内税有哪些税种
  • 增值税纳税申报表电子版在哪下载
  • 利息收入记借方负数表示增加还是减少
  • 公司只有一个人可以不交社保吗
  • 企业不得将生产经营项目、场所
  • 销售发票的会计处理
  • 事业单位个税可以自行申报吗
  • 期末账项调整的类型
  • 办公室零食采购台账
  • 企业申请核定征收的要求
  • 小规模纳税人从哪里可以看出来
  • 企业出售房产的账务处理
  • 对外支付类型
  • 污水处理厂的财务处理流程
  • 收到个税手续费返还现金流量表
  • 不开票收入是怎么回事
  • 服装外贸进出口
  • 勾选认证的发票怎么确认签名
  • 支票大写金额书写转换
  • 供应商给客户员工回扣有罪吗
  • 以股权增资的税费怎么算
  • 结转成本的会计分录摘要怎么写
  • 产品的销售收入减去全部生产成本叫
  • 公司收到拆迁补偿款要交税吗
  • 完工转出产成品成本计算
  • window10怎么创建wifi
  • .exe是啥
  • 理财产品利息税
  • 亏损销售怎么结转库存成本怎么计算
  • 金融企业贷款损失准备金计提比例
  • Stable Diffusion 准确绘制人物动作及手脚细节(需ControlNet扩展)
  • html怎么做
  • 挂靠的项目怎么做账
  • 附加税多交了怎么办理退税
  • vue点击按钮显示对应的内容
  • javascript中文手册
  • php封装数据库操作
  • 商贸企业发生退税的原因
  • 取得抵债资产支付的税费一般不包括下列哪种
  • 进项税转出金额是发票上的哪个
  • 广告公司纳税人类型
  • 原材料入库单价20000出库单价800000
  • 一般计税方法下自来水公司(一般纳税人)销售自来水
  • 企业所得税季末资产总额
  • 清卡后还可以勾选发票吗
  • PostgreSQL教程(八):索引详解
  • mysql终端操作
  • 个人独资企业应税生产经营所得可以扣除税金支付
  • 流动资金与固定资金
  • 工程物资到货管理
  • 材料成本差异是什么
  • 上月多出来的薪资怎么算
  • 出口应纳增值税
  • 进项不能从销项抵扣
  • 装修费用是当月支付吗
  • 建筑行业的收入做什么科目
  • 污水处理工程内容包括
  • 公交车ic卡网上充值
  • 从一个公司到另一个公司叫什么
  • 医院体检收入计入什么科目
  • win8更新到win8.1
  • 黑苹果驱动说明
  • mac怎么多开
  • win8 应用商店
  • 如何装win8.1
  • 找不到config/index taro
  • 你可能不知道的中融新大
  • opencvsharp读取图片
  • cocos2dx安装win7教程视频
  • vue.js有哪些组件
  • js中的filter方法和map方法
  • python爬虫框架 path
  • jquery开源
  • 创建javascript对象
  • android下载文件保存到本地
  • python 循环太慢
  • javascript面向对象 第三方类库
  • 河北市国家税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设