PHP笔记03-数组1
- 声明数组的方式有两种:应用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相关推荐
- MyBatis-学习笔记03【03.自定义Mybatis框架】
Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...
- JavaWeb黑马旅游网-学习笔记03【登陆和退出功能】
Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb黑马旅游网-学习笔记01[准备工作] JavaWeb黑马旅游网-学习笔记02[注册功能] JavaWeb黑马旅游网-学习笔记03[登陆和 ...
- Ajax和JSON-学习笔记03【JSON_基础语法】
Java后端 学习路线 笔记汇总表[黑马程序员] Ajax和JSON-学习笔记01[原生JS方式实现Ajax] Ajax和JSON-学习笔记02[JQuery方式实现Ajax] Ajax和JSON-学 ...
- Filter和Listener-学习笔记03【Filter案例】
Java后端 学习路线 笔记汇总表[黑马程序员] Filter和Listener-学习笔记01[Filter快速入门] Filter和Listener-学习笔记02[Filter细节] Filter和 ...
- JSP、EL和JSTL-学习笔记03【EL介绍和运算符、EL获取域中存储的数据】
Java后端 学习路线 笔记汇总表[黑马程序员] JSP.EL和JSTL-学习笔记01[JSP基础语法] JSP.EL和JSTL-学习笔记02[MVC] JSP.EL和JSTL-学习笔记03[EL介绍 ...
- ES6学习笔记03:变量的解构赋值
ES6学习笔记03:变量的解构赋值 如果想从复杂数据结构(数组.对象)中获取某一个数据,可能需要大量的遍历操作才能完成.通过解构赋值,这一过程可以得到简化. 1.字符串的解构赋值 其实,Python也 ...
- python半径为3圆形区域边界曲线_OpenCV 学习笔记03 边界框、最小矩形区域和最小闭圆的轮廓...
本节代码使用的opencv-python 4.0.1,numpy 1.15.4 + mkl 使用图片为 Mjolnir_Round_Car_Magnet_300x300.jpg 代码如下: impor ...
- contiki学习笔记03
contiki学习笔记03 contiki是基于事件型驱动的操作系统,它传递事件的方式有两种,同步和异步. process_post_synch函数是同步,调用它可以马上执行相关的线程:process ...
- 《Unity API常用方法和类详细讲解—Siki学院》课程学习笔记03
<Unity API常用方法和类详细讲解-Siki学院>课程学习笔记03 课时18-20协程及其执行 1.使用Coroutine实现颜色动画渐变 void Update(){if (Inp ...
- ESP32 单片机学习笔记 - 03 - MCPWM脉冲输出/PCNT脉冲计数
ESP32 单片机学习笔记 - 03 - MCPWM脉冲输出/PCNT脉冲计数 前言,继续上一篇的内容.因为上一篇刚好实验了iic和spi,形成一对.接下来讲pwm另起一篇. 目录 ESP32 单片机 ...
最新文章
- 网络规划设计培训与方案集下载
- GitHub标星10,000+,Apache项目ShardingSphere的开源之路
- java写出文本文档乱码_对象流如何写出到文件以及为什么乱码
- rabbitmq的整体架构一览
- spring框架四大原则
- shadow fight 1.6.0 内购
- python 类-Python 类class定义 方法与属性教程
- hdu 4502(DP)
- [Spoj]Counting Divisors (cube)
- strcpy、memcpy和memset的区别
- leetcode - 62. 不同路径
- linux安装替换python3,linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
- 关于数据权限的几个问题
- Excel 2007 Open XML文件结构~~~1
- 广播的接收与U盘广播
- VS2015 设置项目依赖项
- 我和Linux,不得不说的故事
- linux路由器还原,openwrt路由器恢复出厂设置的方法
- 个人实名认证的几种方案
- TCL L32F2510E 安装第三方软件方法
热门文章
- 使用Navicat 设定 sql 触发器
- 算法——归并和归并排序
- 动态内存的申请和非动态内存的申请_深圳罗湖“限制非深户申请公办学位”惹争议,官方权威回应来了...
- CentOS7.x Sysbench 测试mysql数据库性能(version:sysbench-1.1.0)
- 关于Android中使用WebView播放网络视频不能全屏的问题
- Deep Learning Hierarchical Representations for Image Steganalysis【Ye-Net:图像隐写分析的深度学习层次表示】
- 如何修改win服务器默认路由,服务器win默认路由设置方法
- HTML5教程|0代码,快速制作调查问卷
- 凯利讯讲解为什么MOS管可以防止电源反接?
- 【企业微信实现免密登录以及发送消息(企业内部应用)】