• 声明数组的方式有两种:应用array()函数声明数组;直接通过为数组元素赋值的方式声明数组。
  • 应用array()函数声明数组,如果定义了两个完全一样的索引,则后面一个会覆盖前一个。数组中的各数据元素的数据类型可以不同,也可以是数组类型(即二维数组)。

应用array()函数定义数组,可以只给出元素值而不必给出键值。可以通过给变量赋予一个没有参数的array()函数来创建空数组,然后使用方括号[]语法添加值。

在使用array()函数定义的数组的数据时,可以直接利用它们在数组中的排列顺序取值,这个顺序即:下标。

  • 直接为数组元素赋值(同一数组元素中的数组名必须相同)——在创建数组时不知道所创建数组的大小,或在实际编写程序时数组大小有可能改变时采用。

  • PHP中数组的类型有两种:索引数组(indexed array,使用数字作为键)和联合数组(associative array,使用字符串作为键)。
  • 数字索引数组默认值从0开始;数组中只要键名中有一个不是数字,那么这个数组就是关联数组,关联数组键名要加引号(单双都可以)。

  • 使用echo语句对数组元素输出,使用print_r()函数对数组结构输出。

  • 数组的构造——如果一个数组的元素不是变量,而是一维数组的时候,那么这个数组就是二维数组。

  • 遍历数组*方法一:foreach循环遍历:并非操作数组本身,而是操作数组的一个备份。

  • 遍历数组*方法二:list()函数:仅能用于数字索引的数组,且数字索引从0开始。经典应用:使用list()函数遍历数组,获取存储在数组中的用户登录信息(案例003)。
  • 字符串与数组的转换——使用explode()函数将字符串转换成数组;使用implode()函数将数组转换成字符串。

  • 统计数组元素个数:count()函数。统计二维数组的个数需要使用递归法。

  • 使用array_search() 函数查询数组中指定元素,经典案例005.
  • 获取数组中最后一个元素:array_pop() 函数,获取并返回数组中的最后一个单元,并将数组的长度减1,如果数组为空(或者不是数组)将返回null。

  • 向数组中添加元素:array_push() 函数,将数组当成一个栈,将传入的变量压入该数组的末尾,数组的长度将增加入栈变量的数目,返回数组新的单元总数。

  • 删除数组中的重复元素:array_unique() 函数,将值作为字符串排序,然后对每个值只保留第一个键名,忽略所有后面的键名,即删除数组中的重复元素。

8.索引数组是以数字作为键名的数组;关联数组是指以数字、字符串、或数字和字符混合作为键名的数组。

9.数组排序的函数:

(9.1)sort()函数——对数组元素从低到高排序,rsort()函数——对数组元素从高到低排序。

(9.2)使用sort()函数和rsort()函数对数组排序时,可能会破坏数组键名与值的对应关系。如果需要保持数组键名与值得对应关系,可以使用asort()函数和arsort()函数。

(9.3)ksort()函数和krsort()函数——对数组键名进行从低到高和从高到低排序。

(9.4)实现随机排序——shuffle()函数。

10.数组判断的函数:

(10.1)使用in_array()函数用来判断某元素是否在数组中

(10.2)array_key_exist()函数用来判断一个数组中是否包含指定的键名

11.数组的合并与拆分

(11.1)array_merge()函数是把两个或多个数组合并为一个数组。如果键名有重复,后面的键名对应的值会覆盖前面的值。如果是数字索引的数组,则键名会以连续方式重新组成索引。

如果仅向array_merge()函数中传入一个数组参数,且键名位整数,则该函数将返回键名以0开始进行重新索引的新数组。

(11.2)array_chunk()函数可以将一个数组分割成多个数组

12.其他常用的数组函数:

(12.1) range() 函数快速创建具有连续数值的数组:

(12.2) array_reverse() 函数——翻转数组:将原数组中的元素顺序翻转,并返回翻转后的新数组。

(12.3) array_sum() 函数——求数组元素之和:将一个数组中的所有值加在一起,返回最终的结果和。该函数要求数组中所有的值都必须是整数或浮点数,如果包含其他的数据类型(如字符串),将全部被忽略。

(12.4) array_flip() 函数——对调数组的键名和值:返回一个对调键名和值后的新数组。

13.数组的应用实例

(13.1)顺序查找——从头到尾逐个查找

(13.2)二分查找——使查找的范围不断缩小一半,所以查找效率较高

【代码】https://github.com/rxbook/study-php/tree/master/code03

PHP笔记03-数组1相关推荐

  1. MyBatis-学习笔记03【03.自定义Mybatis框架】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  2. JavaWeb黑马旅游网-学习笔记03【登陆和退出功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...

  3. Ajax和JSON-学习笔记03【JSON_基础语法】

    Java后端 学习路线 笔记汇总表[黑马程序员] Ajax和JSON-学习笔记01[原生JS方式实现Ajax] Ajax和JSON-学习笔记02[JQuery方式实现Ajax] Ajax和JSON-学 ...

  4. Filter和Listener-学习笔记03【Filter案例】

    Java后端 学习路线 笔记汇总表[黑马程序员] Filter和Listener-学习笔记01[Filter快速入门] Filter和Listener-学习笔记02[Filter细节] Filter和 ...

  5. JSP、EL和JSTL-学习笔记03【EL介绍和运算符、EL获取域中存储的数据】

    Java后端 学习路线 笔记汇总表[黑马程序员] JSP.EL和JSTL-学习笔记01[JSP基础语法] JSP.EL和JSTL-学习笔记02[MVC] JSP.EL和JSTL-学习笔记03[EL介绍 ...

  6. ES6学习笔记03:变量的解构赋值

    ES6学习笔记03:变量的解构赋值 如果想从复杂数据结构(数组.对象)中获取某一个数据,可能需要大量的遍历操作才能完成.通过解构赋值,这一过程可以得到简化. 1.字符串的解构赋值 其实,Python也 ...

  7. python半径为3圆形区域边界曲线_OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓...

    本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...

  8. contiki学习笔记03

    contiki学习笔记03 contiki是基于事件型驱动的操作系统,它传递事件的方式有两种,同步和异步. process_post_synch函数是同步,调用它可以马上执行相关的线程:process ...

  9. 《Unity API常用方法和类详细讲解—Siki学院》课程学习笔记03

    <Unity API常用方法和类详细讲解-Siki学院>课程学习笔记03 课时18-20协程及其执行 1.使用Coroutine实现颜色动画渐变 void Update(){if (Inp ...

  10. ESP32 单片机学习笔记 - 03 - MCPWM脉冲输出/PCNT脉冲计数

    ESP32 单片机学习笔记 - 03 - MCPWM脉冲输出/PCNT脉冲计数 前言,继续上一篇的内容.因为上一篇刚好实验了iic和spi,形成一对.接下来讲pwm另起一篇. 目录 ESP32 单片机 ...

最新文章

  1. 网络规划设计培训与方案集下载
  2. GitHub标星10,000+,Apache项目ShardingSphere的开源之路
  3. java写出文本文档乱码_对象流如何写出到文件以及为什么乱码
  4. rabbitmq的整体架构一览
  5. spring框架四大原则
  6. shadow fight 1.6.0 内购
  7. python 类-Python 类class定义 方法与属性教程
  8. hdu 4502(DP)
  9. [Spoj]Counting Divisors (cube)
  10. strcpy、memcpy和memset的区别
  11. leetcode - 62. 不同路径
  12. linux安装替换python3,linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
  13. 关于数据权限的几个问题
  14. Excel 2007 Open XML文件结构~~~1
  15. 广播的接收与U盘广播
  16. VS2015 设置项目依赖项
  17. 我和Linux,不得不说的故事
  18. linux路由器还原,openwrt路由器恢复出厂设置的方法
  19. 个人实名认证的几种方案
  20. TCL L32F2510E 安装第三方软件方法

热门文章

  1. 使用Navicat 设定 sql 触发器
  2. 算法——归并和归并排序
  3. 动态内存的申请和非动态内存的申请_深圳罗湖“限制非深户申请公办学位”惹争议,官方权威回应来了...
  4. CentOS7.x Sysbench 测试mysql数据库性能(version:sysbench-1.1.0)
  5. 关于Android中使用WebView播放网络视频不能全屏的问题
  6. Deep Learning Hierarchical Representations for Image Steganalysis【Ye-Net:图像隐写分析的深度学习层次表示】
  7. 如何修改win服务器默认路由,服务器win默认路由设置方法
  8. HTML5教程|0代码,快速制作调查问卷
  9. 凯利讯讲解为什么MOS管可以防止电源反接?
  10. 【企业微信实现免密登录以及发送消息(企业内部应用)】