版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.1数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组是一组有序的变量,其中每个变量都称为数组的一个元素,要区分每个元素,可以使用数组的下标,也称为键。数组中的每个元素都包含两部分:键和值,可以通过键来获取相应数组元素的值。在PHP中,定义数组的方式主要有两种:一种是应用array()函数,另一种是使用“[]”标识符,即直接为数组元素赋值。有一个班级学生花名册,如果将其存储到单个变量中,如下所示:下一页返回4.1数组
一个班级有几十个学生,要定义几十个这样的变量,显然,这会为程序员带来很大的工作量,并且如果想遍历所有的变量,并找出某个学生,这无疑是一种很糟糕的解决方法。那么应该如何解决这样的需求呢?解决方法就是创建一个一维数组,因为在数组中可以通过键值访问某个数组元素。4.1.1 通过数组标识符“[]”创建一维数组为了方便对学生花名册的操作,可以创建一维数组。通过数组标识符“[]”创建一维数组的方式如下:需要注意的是,使用这种方式定义数组时,数组名必须相同。为了加深读者对这种定义数组方式的理解,下面列举一个实例,见例4-1。上一页下一页返回4.1数组
【例4-1】使用“[]”标识符定义数组,保存5个学生的姓名,并输出到网页中。例4-1中的print_r()函数用于打印一个变量的信息。如果参数是字符串、整型或浮点型的变量,将打印变量值本身;如果参数是数组型变量,则会按照一定的格式显示键名和值。运行结果如图4-1所示。上一页下一页返回4.1数组
通过图4-1可以看出,如果在定义数组时不指定下标,默认是从0开始的。如果希望数组的下标从1开始,需要显示指定数组的下标,见例4-2。【例4-2】使用“[]”标识符定义数组,下标从1开始,保存5个学生的姓名,并输出到网页中。上一页下一页返回4.1数组
4.1.2 使用array()函数创建一维数组一维数组定义的另一种定义方法是使用array()函数。其语法格式如下:参数mixed的语法为key=>value,多个参数mixed之间用逗号分开,分别定义索引(下标)和值。如果省略了索引,则自动产生从0开始的整数索引。如果索引是整数,则下一个产生的索引为当前索引值加1。如果定义了两个完全一样的索引,则后面的数组元素会覆盖前一个数组元素。例4-3即是使用array()函数创建数组的实例。上一页下一页返回4.1数组
【例4-3】使用array()函数定义数组,保存5个学生的姓名,遍历数组的每个元素值输出到网页中,每个学生姓名占一行。例4-3中的count()函数用来获取数组的长度,即数组中的元素个数,引用单个数组元素可以使用下标的形式。运行结果如图4-2所示。上一页下一页返回4.1数组
4.1.3 数组的分类PHP主要支持两种数组:数字索引数组和关联数组。数字索引数组使用整数作为键,关联数组使用字符串作为键。1.数字索引数组数字索引数组有两种创建方法:①自动分配索引键(索引键总是从0开始):②人工分配索引键(索引键可以不是连续的):上一页下一页返回4.1数组
2.关联数组关联数组的键值是指定的字符串。主要有两种创建方法:①使用array()函数的方法,见例4-4。【例4-4】定义关联数组,保存5个学生的姓名,键值为相应学生的学号。遍历数组的每个元素并输出到网页中。上一页下一页返回4.1数组
var_dump()函数的功能是打印数组的内容,与print_r()函数的区别是var_dump()可以将每个元素的数据类型一并打印出来,而print_r()函数只是打印值。运行结果如图4-3所示。②使用“[]”标识符的方法,如下:关联数组只能使用键值字符串引用,不能使用数值键引用。因此,遍历关联数组就不能使用for循环。那么,如果需要遍历关联数组,应该怎么办呢?这时可以使用foreach循环。foreach循环的语法格式如下:上一页下一页返回4.1数组
每进行一次循环,当前数组元素的值就会被赋值给$value变量,数组的键值赋给$key变量,然后数组指针会移动到下一个元素的位置,因此,在进行下一次循环时,将看到数组中的下一个值。其中$array为要遍历的数组,as为关键字,不能改变,$key与$value两个变量的名字可以自定义。如果不需要访问键值,可以将“$key=>”省略。使用foreach循环遍历数组的用法见例4-5。上一页下一页返回4.1数组
【例4-5】定义关联数组保存一周中每天所对应的中英文,其中,英文为键,中文为值。遍历这个关联数组,每天占一行。运行结果如图4-4所示。上一页返回4.2 二维数组一个数组中的值可以是另一个数组,这样的数组称为二维数组。4.2.1 通过数组标识符“[]”创建二维数组【例4-6】使用数组标识符“[]”创建二维数组。运行结果如图4-5所示。下一页返回4.2 二维数组4.2.2 使用array()函数创建二维数组使用array()创建二维数组见例4-7。【例4-7】编写程序,使用array()函数创建二维数组,保存三个班级和每个班级的学生姓名,遍历这个二维数组,将遍历结果显示到网页上。运行结果如图4-6所示。
上一页返回4.3 数组操作函数4.3.1 转换数组函数1.compact()函数compact()函数用于将一个或多个变量,甚至数组变量转换为新的数组,这些变量的变量名就是数组的键,变量值是数组元素的值。语法格式如下:compact()函数的使用见例4-8。下一页返回4.3 数组操作函数【例4-8】编写程序,使用compact()创建数组,保存一个学生的姓名、年龄和爱好并输出到网页中。运行结果如图4-7所示。上一页下一页返回4.3 数组操作函数2.extract()函数extract()函数的功能与compact()函数的相反,作用是将数组中的每个元素转化为变量,数组元素的键就是对应的变量名,数组元素的值就是对应变量的值。【例4-9】编写程序,使用extract()函数将保存一个学生的姓名、年龄和爱好的数组转化成三个变量,并将这三个变量的值输出到网页中。运行结果如图4-8所示。上一页下一页返回4.3 数组操作函数3.array_combine()函数array_combine()函数的功能是使用两个数组创建一个新的数组,新数组的键来源于第一个数组,值来源于第二个数组。其语法形式如下:array_combine()函数的使用见例4-10。【例4-10】编写程序,使用array_combine()函数创建一个数组,保存一个学生的学号、姓名和年龄,并将数组的值打印到网页中。运行结果如图4-9所示。上一页下一页返回4.3 数组操作函数4.range()函数range()函数的功能是用指定范围内的值创建一个数组。语法格式如下:参数$low表示范围的最小值(含$low);参数$high表示范围的最大值(含$high);参数$step表示步进值,可以省略,如果省略,则步进值为1。range()函数的使用见例4-11。上一页下一页返回4.3 数组操作函数【例4-11】编写程序,使用range()函数建立四个数组。运行结果如图4-10所示。上一页下一页返回4.3 数组操作函数4.3.2 数组遍历函数1.each()函数与list()函数each()函数用来获取数组当前元素的值,获取之后指针移到下一个元素所在的位置,list()函数的功能是将数组中某个变量的键和值分别赋给指定的变量。each()函数与list()函数一起使用可以用来遍历数组元素的值。使用each()函数与list()函数遍历数组的方法见例4-12。上一页下一页返回4.3 数组操作函数【例4-12】使用each()函数与list()函数遍历数组。运行结果如图4-11所示。上一页下一页返回4.3 数组操作函数2.key()函数与next()函数key()函数用来获取数组当前元素的键名,next()函数用来指向当前元素的指针后移,即指向下一个数组元素。key()函数与next()函数一起使用可以遍历数组的所有键名。【例4-13】使用key()函数与next()函数遍历数组键名。运行结果如图4-12所示。上一页下一页返回4.3 数组操作函数4.3.3 数组检查函数1.array_key_exists()函数array_key_exists()函数的功能是检查数组中是否存在某个键名,其返回值为布尔型,如果存在,则返回True,否则返回False。其语法格式如下:参数$key为要查找的键名,参数$search为检查的数组。array_key_exists()函数的使用方法见例4-14。上一页下一页返回4.3 数组操作函数【例4-14】运行结果如图4-13所示。上一页下一页返回4.3 数组操作函数2.in_array()函数与array_search()函数in_array()函数与array_search()函数都是用来判断某个值是否是数组元素的值。其主要区别就是in_array()函数返回的是布尔型,如果数组中存在这个值,则返回True,否则返回False。而在使用array_search()函数时,如果数组中存在这个值,则返回这个值对应的键名,如果不存在,则返回NULL。in_array()函数与array_search()函数的使用见例4-15。【例4-15】in_array()函数与array_search()函数使用实例。运行结果如图4-14所示。上一页返回4.4 数组的应用数组在PHP中占有相当重要的作用,在实际应用PHP开发项目中,基本上都离不开数组。接下来将对数组统计和数组排序进行介绍。4.4.1 数组统计1.count()函数与sizeof()函数count()函数与sizeof()函数都是用来统计数组元素的个数的。使用方法见例4-16。【例4-16】运行结果如图4-15所示。下一页返回4.4 数组的应用2.array_count_values()函数array_count_values()函数的功能是统计数组中每个不同元素的值的出现次数,返回一个新的数组。其语法格式如下。参数$input为需要统计的数组。【例4-17】使用array_count_values()函数统计不同元素出现的次数。运行结果如图4-16所示。上一页下一页返回4.4 数组的应用4.4.2 数组排序在PHP中,有专门对数组进行排序的函数,可以对数组进行升序或降序排序,也可以对数组元素按数字或字符串进行排序。1.sort()函数sort()函数的功能是对数组进行升序排序,排序后的结果删除了原来的键名,并重新分配自动索引的键名。其语法形式如下:参数$sort_flags可以为以下4个值。①SORT_REGULAR:正常比较元素,不改变类型,默认值。②SORT_NUMERIC:元素被作为数字来比较。③SORT_STRING:元素被作为字符串来比较。④SORT_LOCALE_STRING:根据当前的区域设置把元素当作字符串比较。上一页下一页返回4.4 数组的应用【例4-18】使用sort()函数分别以数字和字符串形式对数组进行升序排序。运行结果如图4-17所示。上一页下一页返回4.4 数组的应用2.asort()函数asort()函数的功能和用法与sort()函数的相似,主要区别就是使用asort()函数排序后,数组中的键名与元素值之间还保持原始的关系。【例4-19】使用asort()函数分别以数字和字符串形式对数组进行升序排序。运行结果如图4-18所示。上一页下一页返回4.4 数组的应用3.ksort()函数ksort()函数的语法格式与sort()函数的一致,其作用是对数组的键名进行排序,排序后的数组保持键名与元素值之间的原始关系。ksort()函数的使用方法见例4-20。【例4-20】运行结果如图4-19所示。上一页下一页返回4.4 数组的应用4.rsort()函数、arsort()函数和krsort()函数rsort()函数、arsort()函数和krsort()函数是分别与sort()函数、asort()函数和ksort()函数相对应的降序函数,其使用方法与相对应的函数使用方法一致,在此不再赘述。5.shuffle()函数shuffle()函数用于将数组打乱顺序重排,并删除原有的键名,建立自动索引。【例4-21】使用shuffle()函数重排数组。运行结果如图4-20所示。上一页下一页返回4.4 数组的应用6.array_reverse()函数array_reverse()函数用于对数组进行逆序排序,其语法格式如下:参数$array表示用于逆序排序的数组,参数$preserve_keys为布尔型,值为True时,表示保留原来的键名,值为False时,表示重新建立自动索引,如果此参数省略,默认为False。如果数组元素的命名为字符串,则第二个参数不起作用,自动保留原来的键名。上一页下一页返回4.4 数组的应用【例4-22】使用array_reverse()函数逆序排序数组。运行结果如图4-21所示。上一页下一页返回4.4 数组的应用7.natsort()函数natsort()函数的排序方式是按照人们通常对字母、数字和字符串进行排序的方法,排序后保持原有键名和元素值之间的关系,并对大小写敏感。【例4-23】使用natsort()函数排序数组。运行结果如图4-22所示。上一页下一页返回4.4 数组的应用8.array_multisort()函数array_multisort()函数可以一次对多个数组进行排序。语法格式如下:参数$arr为需要排序的第一个数组,参数$arg1为排序顺序,可以省略,可能的值如下。①SORT_ASC:按升序排列,默认值。②SORT_DESC:按降序排列。参数$arg2为排序类型,可以省略,其可能的值如下:①SORT_REGULAR:常规顺序排序,即标准ASCII顺序。默认值。②SORT_NUMERIC:按数值顺序排序。③SORT_STRING:按字符串顺序排序。上一页下一页返回4.4 数组的应用④SORT_LOCAL_STRING:基于当前区域设置按字符串顺序排序。PHP5.3新增。⑤SORT_NATURAL:使用类似于natsort()的自然排序。PHP5.4新增。⑥SORT_FLAG_CASE:可以结合多种形式对字符串排序,不区分大小写。PHP5.4新增。参数$arr2为第二个需要排序的数组,参数$arr3为第三个需要排序的数组,都可以省略。其中$arr数组为排序的主数组,与$arr排序后的顺序对照,相应位置即为后面其他数组的排序结果,如果第一个数组中有元素值相同,则下一个数组相应元素按数值升序排序,依此类推。数组中的键名如果为字符串,则保持原有的键名和元素值关系不变;如果为数值,则重新自动生成索引。上一页下一页返回4.4 数组的应用【例4-24】使用array_multisort()函数对多个数组排序。运行结果如图4-23所示。上一页返回4.5 综合案例本章介绍了这么多数组的相关知识,那么数组在项目开发中是如何应用的呢?下面将综合运用数组函数,实现将多个文件上传到服务器上的功能。【例4-25】动态添加附件并上传到服务器。下一页返回4.5 综合案例上一页下一页返回4.5 综合案例上一页下一页返回4.5 综合案例运行结果如图4-24所示。单击图4-24中的“添加”按钮,可以浏览文件控件,可以多次单击,以达到添加多个文件的目的。图4-25所示即为添加三个文件的效果图。单击图4-25中的“提交”按钮,三个文件上传成功,运行效果如图4-26所示。上一页返回图4-1使用“[]”标识符定义数组运行结果
返回图4-2使用array()函数定义数组运行结果
返回图4-3例4-4运行结果返回图4-4使用foreach循环遍历关联数组运行结果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高职服装款式设计(设计基础)试题及答案
- 2026年化工分析(电化学分析技术)试题及答案
- 2025年高职(财务管理综合实训)投资管理实操试题及答案
- 2025年中职第三学年(防火墙技术)网络安全防护测试题及答案
- 2025年中职工业互联网技术(工业互联网基础)试题及答案
- 2025年中职第二学年(家政服务与管理)家庭膳食搭配实务测试题及答案
- 2025年中职(会计)成本核算综合试题及答案
- 2025年大学第四学年(服装设计与工程)服装综合设计试题及答案
- 2026年粉底销售(客户接待)试题及答案
- 2025年高职统计学(统计教育心理学案例分析)试题及答案
- 遗产分割协议书
- 京瓷哲学手册样本
- 形神拳动作名称与图解
- 博士生入学复试面试报告个人简历介绍含内容模板两篇
- 食品工厂设计 课件 第二章 厂址选择
- 2023年生产车间各类文件汇总
- WORD版A4横版密封条打印模板(可编辑)
- 2013标致508使用说明书
- 中考满分(合集15篇)
- 《大数据营销》-课程教学大纲
- GB/T 18993.1-2020冷热水用氯化聚氯乙烯(PVC-C)管道系统第1部分:总则
评论
0/150
提交评论