版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章Web程序设计PHP数组应用新工科建设之路·计算机类专业系列教材01数组的基本概念01数组的基本概念01数组的概念数组是一组数据的集合,将数据按照一定规则组织起来,形成一个可操作的整体。数组是对大量数据进行有效组织和管理的手段之一,通过数组函数可以对大量性质相同的数据进行存储、排序、插入、删除等操作,从而可以有效地提高程序开发效率及改善程序的编写方式。数组的本质是存储、管理和操作一组变量。数组与变量的比较如图5-2所示。01数组的基本概念01数组的概念变量中存储的是单个数据,数组中存储的则是多个变量的集合。使用数组的目的是将多个相互关联的数据组织在一起形成一个整体,作为一个单元使用。数组中的每个实体都包含两项:键(key)和值(value)。其中,键(也称数组的下标)可以是数字、字符串或数字和字符串的组合,用于标识数组中相应的值;值被称为数组中的元素,可以定义为任意数据类型,甚至是混合类型。最终通过键名来获取相应的值。01数组的基本概念02数组的类型1数字索引数组数字索引数组的下标(键)由数字(整数)组成,默认从0开始,每个数字对应数组元素在数组中的位置,不需要特别指定,PHP会自动为数字索引数组的键名赋一个整数值,然后从这个值开始自动增加,也可以指定从某个具体位置开始存储数据。下面创建一个数字索引数组:PHP的数组可以按照键的数据类型分为两种:数字索引数组(indexedarray)和关联数组(associativearray)。数字索引数组使用数字作为键,关联数组使用字符串作为键。01数组的基本概念02数组的类型关联数组关联数组的下标(键)由数字和字符串混合的形式组成。如果一个数组中有一个键不是数字,那么这个数组就称为关联数组。关联数组使用字符串键来访问存储在数组中的值。下面创建一个关联数组:说明:关联数组的键可以是任何--个整数或字符串。如果键是-一个字符串,就要给这个键或索引加上个定界修饰符,即“1”或“”。对于数字索引数组,为了避免不必要的麻烦,最好加上定界符。202数组创建和删除02数组的创建和删除PHP中创建数组的规则如下。①数组的名称由“$”开始,第一个字符是字母或下画线,其后是任意数量的字母、数字或下画线。②在同一个程序中,标量变量和数组变量都不能重名。例如,如果已经存在一个名.称为Sstring的变量,又创建一个名称为$string的数组,那么前一个变量就会被覆盖。③数组的名称区分大小写,如$String与$string是不同的。声明数组的方法有两种,分别为用户声明和函数声明。下面介绍用户如何自已创建数组和使用什么函数可以直接创建数组。02数组的创建和删除01创建数组1.用户创建数组在定义数组时,有时不知道需要创建多大的数组或数组的大小可能发生变化,这时就可以使用直接为数组元素赋值的方式定义数组,其语法格式如下:其中,key可以是int类型或字符串型数据,value可以是任意数据类型的值。02数组的创建和删除01创建数组注意:①用户创建数组适合创建未知大小的数组,或者创建大小可能发生改变的数组。②通过“[]”直接为数组元素赋值,同-数组元素中的数组名称必须相同。③如果数组元素中的“键”是一个浮点数,那么“键”将被强制转换为整数(如浮点数8.0将被强制转换为整数8);如果“键”是true或false,那么“键”将被强制转换为整数1或0。④如果数组元素中的“键”是一个字符串,且该字符串完全符合整数格式,那么数组元素的“键”将被强制转换为整数(如"9"将被强制转换为整数9)。⑤由于数组元素中的“键”唯-标识一个元素,因此数组元素中的“键”不能相等。如果两个数组元素的“键”相等,那么“键”对应的“值”将被覆盖。⑥不要在array()结构中使用诸如“red=>"red"键值对的方式创建数组元素,也不要使用诸如“Scolors[red]="red"”的赋值语句的方式创建数组元素,否则程序的可读性及运行效率将大打折扣。⑦在直接为数组元素赋值时,键是可以省略的,下标默认从0开始。02数组的创建和删除01创建数组2.使用函数创建数组PHP中常用的创建数组的函数是array(),其语法格式如下:其中,参数mixed的格式为“key=>value",多个参数mixed用“,”分隔,分别定义键和值。用8array()函数声明数组时,数组下标既可以是数值索引也可以是关联索引。下标与数组元素值之间用“=>”连接,不同数组元素之间用逗号分隔。从严格意义上来说,array()是一种结构,而不是一个函数。02数组的创建和删除01创建数组说明:①数组中的索引(key)可以是字符串或数字。如果省略了索引,会自动产生从0开始的整数索引。如果索引是整数,那么下一个产生的索引将是目前最大的整数索引+1。如果定义了两个完全相同的索引,那么后一个索引会覆盖前-一个索引。②数组中的各数据元素的数据类型可以不同,也可以是数组类型。当mixed是数组类型时,就是二维数组。02数组的创建和删除01创建数组3.创建二维数组前面创建的数组都是只有一列数据内容的,因此称为一维数组。如果将两个一维数组组合成一个数组,这个数组就被称为二维数组。在定义多维数组时,虽然PHP没有限制数组的维数,但是在实际应用中,为了便于代码阅读、调试和维护,推荐使用三维及以下的数组保存数据。02数组的创建和删除02数组删除unset语句可以删除整个数组,也可以删除数组中的某个元素。数组元素被删除后,数组中的数字键名不会自动填补空缺的数字。03数组遍历和输出03数组遍历和输出01访问数组元素访问数组元素值的方法和访问变量值的方法相同:通过指定数组名并在“[]”中指定键的方式访问数组元素的值。这样不仅可以读取某个数组元素的值,还可以为数组添加数组元素及修改数组元素的值,并可以像访问变量的方式访问数组元素的值。PHP提供两种变量赋值方式:传值赋值和传地址赋值,对于数组同样适用。03数组遍历和输出02数组遍历方式1用foreach语句遍历数组在PHP中,foreach语句可以方便地遍历数组,其语法格式如下:其中,$variable表示需要遍历的数组的名称;as是一个固定的关键字,其后指定的是数组元素,键变量$key是可选的,值变量$value是必选的。当不需要遍历数组元素的键名时,可以在as关键字后直接设置一个变量表示当前元素的值。每次循环时,foreach语句会把键赋给$key,值赋给$value。03数组遍历和输出02数组遍历方式使用for循环遍历数组如果遍历的数组是数字索引数组,并且数组的索引值为连续的整数,就可以使用for循环来遍历,但其前提是应用count()函数获取到数组中元素的个数,然后将获取的元素个数作为for循环执行的条件,才能完成数组的遍历。203数组遍历和输出02数组遍历方式3用数组函数list()和each()遍历数组(1)list()函数list()函数将数组中的值赋给一些变量,仅用于数字索引的数组,且数字索引从0开始,其语法格式如下:其中,参数mixed为被赋值的变量名称。(2)each()函数each()函数返回数组中的键名和对应的值,并向前移动数组指针,其语法格式如下:其中,参数array为输入的数组。03数组遍历和输出03通过数组指针遍历数组数组指针指向数组中的某个元素,默认指向数组中第一个元素,通过移动或改变指针的位置,可以访问数组中的任意元素。数组的内部指针是数组内部的组织机制,可以指向一个数组中的某个元素,默认指向数组中第一个元素。对于数组指针的控制,PHP提供了可以利用的内建函数。✧current():
获取目前指针位置的内容资料。✧key():
读取目前指针所指向资料的索引值(键值)。✧next():将数组中的内部指针移动到下一个单元。✧prev():
将数组的内部指针倒回1位。✧end():
将数组的内部指针指向最后一个元素。✧reset():
将目前指针无条件移至第一个索引位置。这些函数的参数只有一个,就是要操作的数组本身。通过这些函数可以移动数组指针,从而访问数组中的元素。04数组的处理函数04数组的处理函数01系统时区设置在PHP中,通过array_pop()函数可以删除并返回数组中的最后一个元素(出栈),同时将数组的长度减1,如果数组为空(或者不是数组)将返回null,其语法格式如下:其中,参数array为输入的数组。与array_pop()函数对应的array_push()函数是将一个或多个元素压入数组的末尾(入栈)。1.array_pop()函数04数组的处理函数01系统时区设置在PHP中,通过array_gshif()函数删除数组中第一个元素,并返回被删除元素的值。若键名是数字的,所有元素都会获得新的键名,从0开始,以1递增,其语法格式如下:其中,参数array是必选的。array_shift()函数返回从数组中获取开头元素的值,若数组为空,则返回NULL。与array_shif()函数对应的array_unshift()函数能够实现在数组开头插入一个或多个元素。2.array_shift()函数04数组的处理函数02去除数组中的重复元素array_unique()函数可以将数组中重复的元素去除,其语法格式如下:array__unique()函数可以将数组中重复的元素去除,其语法格式如下;其中,参数array为输入的数组。虽然array_unique()函数只保留重复值的第一个键名,但是第一个键名并不是在未排序的数组中同一个值第一个出现的键名,只有当两个字符串的表达式完全相同时((string)$elem1===(string)$elem2),第一个单元才被保留。注意04数组的处理函数03获取数组中指定元素的键名获取数组中指定元素的键名可以使用array_search()函数或array_keys()函数。array_search()函数可获取数组中指定元素的键名。如果获取成功,就返回元素的键名,否则返回false,其语法格式如下:array_search()函数的参数说明如表所示。04数组的处理函数04数组键与值的排序PHP有4个基本的数组排序函数,分别为sort()、rsort()、ksort()、krsort()函数,分别对应的排序功能为数组值正序、值倒序、键正序、键倒序。这些函数使用起来都比较简单,因为它们是无返回值的地址模式函数,所以只需将排序的数组变量放到函数的指定参数中即可,其语法格式如下:其中,array为必选参数,表示输入的数组;sort_flags为可选参数,可改变排序的行为,排序类型标记如下:SORT_REGULAR(正常比较单元),SORT_NUMERIC(单元被作为数字来比较),SORT_STRING(单元被作为字符串来比较)。除了对数组排序,还可以通过sufffle()函数将数组元素顺序打乱。04数组的处理函数05字符串与数组的转换字符串函数explode()可以将字符串分隔成数组,而数组函数implode()可以将数组中的元素组合成一个新字符串。implode()函数的语法格式如下:其中,参数glue是字符串类型,指定分隔符;参数pieces是数组类型,指定要被合并的数组。05
预定义数组05预定义数组1服务器变量:$_SERVER$_SERVER是一个包含诸如头信息(header)、路径(path)和脚本位置(scriptlocation)的数组,是PHP的一个全局变量,可以在PHP程序的任何地方直接访问它。在PHP中经常需要使用地址栏的信息,如域名、访问的URL、URL带的参数等,这些信息存储在PHP服务器的预定义变量$_SERVER中。这个数组中的项目由Web服务器创建,不能保证每个服务器都提供全部项目,可能忽略一些服务器。print_r($_SERVER)可以实现相关信息的显示。05预定义数组环境变量:$_ENV$_ENV是一个包含服务器端环境变量的数组,与$_SERVER一样,也是一个全局变量,可以在PHP程序的任何地方直接访问它。$_ENV只是被动地接收服务器端的环境变量并把它们转换为数组元素,可以通过var_dump($_ENV)直接打印相关信息。如果输出的结果为空,那么原因是PHP的配置文件php.ini的配置项为variables._order="GPCS",需要在GPCS前加上“E",变成variables_order="EGPCS",这样输出的结果就不会为空了。205预定义数组3URLGET变量:$_GET在PHP中,预定义的S_GET变量用于获取来自method="GET"表单中的值。注意:在HTML表单中使用method="GET"提交数据时,数据会显示在URL中,所以发送密码或其他敏感信息时不要使用该方法,可以使用POST方法。HTTPPOST变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代职业教育体系建设项目申报书
- 技术服务市场需求变化趋势与商业创新机遇分析报告
- 2025-2030年农村社会养老保险AI应用行业跨境出海战略分析研究报告
- 2025-2030年火山地热泥全身裹敷行业深度调研及发展战略咨询报告
- 苗木深加工园艺个性化定制创新创业项目商业计划书
- 技能病例分析试题及答案
- 2026年江西财经大学专升本高等数学试卷及参考答案
- 化学中招试卷及答案
- 2026年冷暖峰说课稿模板
- 2026年财务会计初级考试题精
- 闵行区2024-2025学年下学期期末考试六年级数学试卷及答案(上海新教材沪教版)
- 矿山双控体系管理制度
- CJ/T 299-2008水处理用人工陶粒滤料
- 《高效跨部门协作》课件
- 上虞社工考试题及答案
- 昆虫仿生学知识
- 2025年度摩托车赛事赞助与广告投放合同3篇
- 人教版高一年级下学期期末考试数学试卷与答案解析(共五套)
- MBA会计学课程-会计学的基本原理
- 歌曲《我会等》歌词
- 肩关节X线检查
评论
0/150
提交评论