本文主要和大家分享php之数组指针详解,首先我们会和大家分享php 数组指的针操作方法,希望能帮助到大家。

一、php 数组指针操作

利用php的内置函数:key,current,next(),prev()移动到上一个,

reset()重置,移动到第一个元素,end()移动到最后一个元素上

注意一旦指针位置非法,则不能做相对移动(next,prev),可以绝对移动(reset,end),reset,使用频率较高!

each(),集合了 key,current,和next三者的功能!将当前元素信息获得后,移动指针到下一个元素上!

元素信息数组 = each($arr).移动指针

注意,元素信息数组,是两种表示方案:索引和关联。

其中:索引:0,1分别 表示 键和值,关联:key,value分别表示 键和值

二、常用的指针遍历方法

each+while+list遍历数组

list-each遍历数组

升级化操作:

将获得键变量和值变量的操作,简化!

利用 list结构

利用一个索引数组,同时初始化多个变量!

each的返回值就包含了索引数组0为键,1为值!

利用list简化的结果:

其实:只要有循环结构,指针操作就可以完成遍历数组

三、数组的指针问题讨论

考虑复制时的指针位置问题:

如果原数组指针已经非法了呢?

再看:

问题是,复制后,谁先 执行的current,哪个数组指针被初始化!

该现象的原因是:

1, 如果数组指针位置非法,复制时,会将新数组指针初始化!

2, 值传递时,PHP采用了一个 COW(写时复制,copy on write)的优化措施!

写时复制的两个要点:

在值传递时,并没有马上为新变量开辟值空间,而在两个变量都未发生改变之前,还是使用的一个值空间

一旦某个变量发生改变,此时会复制值空间,让发生改变的变量去引用新的空间!

注意,current也会发出写操作,导致空间被复制!先current谁,谁是那个新的,指针被初始化!

foreach时

1, 遍历的是拷贝而不是原数组!

2, 只有在原数组发生写操作时,才会真正的拷贝。此时原数组指针停留在当前位置,如果已经非法,则会初始化!

相关推荐:

php 数组 指针,php之数组指针详解相关推荐

  1. java的数组与Arrays类源码详解

    java的数组与Arrays类源码详解 java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用. 类的 ...

  2. c语言指针用法及实际应用详解,通俗易懂超详细

    c语言指针用法及实际应用详解,通俗易懂超详细! \\\插播一条:文章末尾有惊喜哟~/// 今天给大家来讲解一下指针. 我会由浅到深,最后联合实际应用讲解,让大家学会指针的同时,知道大佬们都用指针来干嘛 ...

  3. Python Numpy多维数组.sum(axis=0/1/2...) 详解

    Python Numpy多维数组.sum(axis=0/1/2-) 详解 numpy中axis取值的说明 首先对numpy中axis取值进行说明:一维数组时axis=0,二维数组时axis=0,1,维 ...

  4. php 去重_php求两数组交集的四种方法详解

    题目:给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1],nums2 = [2,2] 输出: [2] 示例 2: 输入: nums1 = [4,9,5 ...

  5. TIA博途中数组Array的基本使用方法详解

    TIA博途中数组Array的基本使用方法详解 ARRAY类型是由数目固定且数据类型相同的元素组成的数据结构. ARRAY类型的定义和使用需要注意以下几点: • ARRAY类型可以在DB.OB/FC/F ...

  6. 西门子触摸屏HMI变量的指针化索引应用示例详解

    西门子触摸屏HMI变量的指针化索引应用示例详解 在实际HMI组态项目时,若有多台相同的设备的参数需要查看或显示时,可以使用变量的指针化索引功能来实现,优点是减少画面上IO域的数量,显示画面更简洁,具体 ...

  7. python定义数组并赋值_python中的数组赋值与拷贝的区别详解

    具体的注解我已经写在了程序里面:通俗的解释了python里面的浅拷贝与深拷贝的不同,请看程序. # -*- coding: utf-8 -*- import numpy as np import co ...

  8. c语言指针用法及实际应用详解,通俗易懂超详细!

    大家好,我是无际. 今天给大家来讲解一下指针. 我会由浅到深,最后结合实际应用讲解,让大家学会指针的同时,知道大佬们都用指针来干嘛! 长文预警!全文大约5200多字,学指针看这篇文章就够了! 很多人跟 ...

  9. 指针应用——八大笔试题详解

    目录 前言 正文 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 总结 鸣谢 前言 我们在前面学习了指针初阶.进阶的知识,作为C语言中的重难点,指针有很大的几率出现在面试时的笔试题中, ...

  10. C语言中函数指针和回调函数的详解

    函数指针:指向函数的指针变量. 因此"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译 ...

最新文章

  1. mysql .net core_MySQL官方.NET Core驱动已出,支持EF Core
  2. 祁阳一中2021年高考成绩查询,祁阳一中2019高考成绩喜报、一本二本上线人数情况...
  3. 解决gitosis中authorized_keys不自动更新问题
  4. VMware 虚拟化编程(9) — VMware 虚拟机的快照
  5. HDFS HA介绍及配置理解
  6. 免费Opengrok-代码阅读工具:Kernel,Optee,ATF,Uboot...
  7. Functions that return a function
  8. boost::log::dynamic_type_dispatcher用法的测试程序
  9. 调用第三方接口缴费的通用逻辑
  10. 无限循环小数转化为分数形式
  11. jieba中文处理的学习
  12. 人生长途,感受着不断拼搏...
  13. 设计模式之工厂方法的重载
  14. zabbix监控硬盘
  15. mencoder mencoder 安装使用及常用参数
  16. SVN学习:SVN的下载安装
  17. 单片机数码管显示原理
  18. EDU教育版Office365使用教程(一):邮箱登陆及使用
  19. 洛谷 P2414 [NOI2011] 阿狸的打字机 题解
  20. 爬虫基础,搜索引擎原理(个人整理)

热门文章

  1. C++ Builder 5编HOOK程序
  2. C++的强制类型转换
  3. P4 详解各硬件部分
  4. 【CyberSecurityLearning 41】Linux密码破解以及菜单加密
  5. 安装已停止,原因是 ProjectType 值的目录不存在。对于您所安装的 Visual St...
  6. SpringBoot(2.4.0)自动配置原理(源码)
  7. 为什么wait、notify必须在synchronized保护的同步代码中
  8. jsp EL表达式比较两个字符串
  9. springboot学习笔记(六)
  10. DVRRDK, EZSDK和DVSDK这三者有什么区别