《细说PHP》第6章PHP中的数组和数据结构.ppt
《《细说PHP》第6章PHP中的数组和数据结构.ppt》由会员分享,可在线阅读,更多相关《《细说PHP》第6章PHP中的数组和数据结构.ppt(55页珍藏版)》请在三一办公上搜索。
1、第6章 PHP中的数组和数据结构,回顾,PHP中的函数都有哪些优越性?如何定义一个函数?PHP变量的范围?我们都有哪些自定义函数的形式?,预习检查,PHP中都有哪些数组?PHP中数组的定义方式?PHP数组的遍历都有哪些?,本章任务,1.数组的分类2.数组的定义3.数组的遍历4.预定义数组5.数组的相关处理函数6.操作PHP数组需要注意的一些细节,1 数组的分类,PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。因为可以用
2、另一个 PHP 数组作为值,也可以很容易地模拟树。,所谓的数组下标可以视为资料内容在此数组中的识别名称,通常被称为数组下标。当索引值为数值时,也代表此资料内容在数组中的储存位置。数组中有几个索引值就被称为几维数组。数组分类:在PHP中有两种数组:索引数组和关联数组。索引(indexed)数组的索引值是整数,以0开始。当通过位置来标识东西时用索引数组。关联(associative)数组以字符串做为索引值,关联数组更像操作表。索引值为列名,用于访问列的数据。,2 数组的定义,2.1 直接赋值的方式声明数组2.2 使用array()语言结构新建数组2.3 多维数组的声明,数组常用的赋值方式:由于 P
3、HP 是属于弱类型数据,因此源代码中的数组并不需要经过特别的声明操作,直接将一组数值指定给某一数组元素即可。一般情况下数组的赋值有两种方式:直接赋值方式 如:$a0=;$a1=;使用array函数 如:$a=array(“,”);,2.1 直接赋值的方式声明数组,直接赋值格式:$数组变量名索引值=资料内容其中索引值(下标)可以是一个字符串或一个整数。等价于整数(不以0开头)的字符串值被当作整数对待。因此,数组$array3与$array3是引用相同的元素。但是$array03引用的另外不同的元素。一维数组数组中索引值(下标)只有一个的数组称为一维数组。在数组中这是最简单的,也是最常用的了。,?
4、php$contact10=1;$contact11=高某;$contact12=A公司;$contact13=北京市;$contact14=(010)98765432;$contact15=;$contact2ID=2;$contact2姓名=峰某;$contact2公司=B公司;$contact2地址=上海市;$contact2电话=(021)12345678;$contact2EMAIL=;print_r($contact1);/输出数组$contact1中所有元素的下标和值 var_dump($contact1);/输出数组$contact1中所有元素的下标和值同时输出每个元素的类型
5、print_r($contact2);/输出数组$contact2中所有元素的下标和值 var_dump($contact2);/输出数组$contact2中所有元素的下标和值同时输出每个元素的类型,?php$contact=1/索引下标为 0$contact=高某;/索引下标为 1$contact=A公司;/索引下标为 2$contact=北京市;/索引下标为 3$contact0=1/声明数组使用的下标为整数0$contactID=1/声明数组使用的下标为字符串$contact1=高某;/使用下标为整数1向数组中添加元素$contact姓名=峰某;/使用下标为字符串“姓名”向数组中添加元素
6、$contact2=A公司;/使用下标为整数2向数组中添加元素$contact公司=A公司;/使用下标为字符串“公司”向数组中添加元素$contact=1;/默认的下标为 0$contact14=高某;/指定非连续的下标为 14$contact=A公司;/将紧跟最高的下标值增1后的下标为 15$contact=北京市;/下标再次增1为 16$contact14=(010)98765432;/前面已声明过下标为14的元素,重新为下标14元素赋值$contact=;/还会紧跟最高的下标值增1后的下标为 17,2.2 使用array()语言结构新建数组,格式:array(key=value,.)/k
7、ey 可以是 integer 或者 string/value 可以是任何值 key 可以是 integer 或者 string。如果键名是一个 integer 的标准表达方法,则被解释为整数(例如“8”将被解释为 8,而“08”将被解释为“08”)。key 中的浮点数被取整为 integer。PHP 中没有不同的数字下标和关联下标数组,数组的类型只有一种,它可以同时包含整型和字符串型的下标。如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。,实例:,aaa,1=bbb,2=ccc);$d=array(aaa,6=bbb,cc
8、c);$e=array(name=zhang,age=20);?,2.3 多维数组的声明,二维数组的声明多维数组的声明方式及规则,与一维数组相同,例如:下面二维数组的声明片段:这时数组中的资料内容如下:如果以 array 语法声明,则如下程序片段:,array(1,高某,A公司,北京市,(010)98765432,),上海联系人=array(2,洛某,B公司,上海市,(021)12345678,),天津联系人=array(3,峰某,C公司,天津市,(022)24680246,),重庆联系人=array(4,书某,D公司,重庆市,(023)13579135,);echo 第一个联系人的公司:.$
9、contact102.;/输出A公司 echo 上海联系人的EMAIL:.$contact2上海联系人5.;/输出,array(array(1,高某,市场部经理,5000.00),array(2,洛某,职员,3000.00),array(3,峰某,职员,2400.00),),产品部=array(array(1,李某,产品部经理,6000.00),array(2,周某,职员,4000.00),array(3,吴某,职员,3200.00),财务部=array(array(1,郑某,财务部经理,4500.00),array(2,王某,职员,2000.00),array(3,冯某,职员,1500.00
10、);print_r($wage市场部);/访问数组$wage中的第一个元素 print_r($wage市场部1);/访问数组$wage市场部中的第二个元素 print_r($wage市场部13);/访问数组$wage市场部1中的第四个元素,输出3000,3 数组的遍历,3.1 使用for语句循环遍历数组3.2 使用foreach语句遍历数组3.3 联合使用list()、each()和while循环遍历数组3.4 使用数组的内部指针控制函数遍历数组,3.1 使用for语句循环遍历数组,;echo 联系人列表;echo;/以html的th标记输出表格的字段名称 echo 编号姓名公司地址电话EMA
11、IL;echo;/使用for循环输出一维数组中的元素 for($i=0;$i.$contact$i.;/循环一次输出数组中的一个元素 echo;,3.2 使用foreach语句遍历数组,foreach循环结构:foreach 仅用于数组,有两种语法。foreach(array_expression as$value).statementforeach(array_expression as$key=$value).statement第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给$value 并且数组内部的指针向前移一步,第二种格式做同样的事,只除了
12、当前单元的键值也会在每次循环中被赋给变量$key。注:当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。此外注意foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。$v)echo$k=$v;?,array(array(1,高某,市场部经理,5000.00),array(2,洛某,职员,3000.00),array(3,峰某,职员,2400.00),产品部=array(array(1,李某,产品部经理,6000.00),array(2,周某,职员,4000.00),array(3,吴某,职员,3200.00),财务部=array(array(1,郑某,财务部经理,4
13、500.00),array(2,王某,职员,2000.00),array(3,冯某,职员,1500.00);/使用三层foreach语句嵌套遍历三维数组,输出三个表格 foreach($wage as$sector=$table)/最外层foreach语句遍历出三个表格,遍历出键和值 echo;echo.$sector.10月份工资表;echo 编号姓名职务工资;foreach($table as$row)/中层foreach语句遍历出每个表格中的行 echo;foreach($row as$col)/内层foreach语句遍历出每条记录中的列值 echo.$col.;echo;echo;,3
14、.3 联合使用list()、each()和while循环遍历数组,array each(array array)返回 array 数组中当前指针位置的键值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。如果内部指针越过了数组的末端,则 each()返回 FALSE。each()经常和list()结合使用来遍历数组。voidlist(mixed.)它不是真正的函数,而是语言结构。list()用一步操作给一组变量进行赋值。注:list()仅能用于数字索引的数组并假定数字索引从0开
15、始。在执行 each()之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用reset()。,1,姓名=高某,公司=A公司,地址=北京市);$id=each($contact);/返回数组$contact中第一个元素的键/值对,是带有4个元素的数组 print_r($id);/输出数组$id:Array(1=1 value=1 0=ID key=ID)$name=each($contact);/返回数组$contact中第二个元素的键/值对,是带有4个元素的数组 print_r($name);/输出Array(1=高某 val
16、ue=高某 0=姓名 key=姓名)$info=array(coffee,brown,caffeine);/声明一个索引数组$info list($drink,$color,$power)=$info;/将数组中的所有元素转为变量 echo$drink is$color and$power makes it special.n;/三个变量值是数组中三个元素的值 list($drink,$power)=$info;/将数组中的部分元素转换为变量 echo$drink has$power.n;/两个变量值是数组中前两个元素的值 list(,$power)=$info;/跳过前两个只将数组中第三个元
17、素转为变量 echo I need$power!n;/输出的一个变量值是数组中第三个元素的值,each()和list()函数的使用,使用while一起遍历数组,1,姓名=高某,公司=A公司,地址=北京市,电话=(010)98765432,EMAIL=);/以HTML列表的方式输出数组中每个元素的信息 echo 一个联系人信息:;while(list($key,$value)=each($contact)/将foreach语句改写成while、list()和each()组合 echo$key:$value;/输出每个元素的键/值对 echo;,3.4 使用数组的内部指针控制函数遍历数组,数组指针
18、的控制函数由于数组是由多笔资料集合而成,所以当程序需要运算处理其中某个索引位置的资料内容时,会由数组之中内定的指针,指向目标资料,以提供程序作正确的读取。下面针对数组指针控制的相关函数,作简单的说明介绍:next()、prev()、end()及 reset()这四个函数可以控制目前数组中的指针位置。next()负责将指针向后移动,prev()负责将指针向前移动;end()会将指针指向数组中最后一个元素,而 reset()函数则会将目前指针无条件移至第一个索引位置。语法格式:mixed next(数组名称);mixed prev(数组名称);mixed end(数组名称);mixed reset
19、(数组名称);mixed key(数组名称);mixed current(数组名称);,”运算符指定了每个元素的字符串下标$contact=array(ID=1,姓名=高某,公司=A公司,地址=北京市,电话=(010)98765432,EMAIL=);/数组刚声明时,数组指针在数组中第一个元素位置/使用key()和current()函数传入数组$contact,返回数组中当前元素的键和值 echo 第一个元素:.key($contact).=.current($contact).;/第一个元素 echo 第一个元素:.key($contact).=.current($contact).;/数组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 细说PHP 细说 PHP 中的 数组 数据结构
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6528698.html