《细说PHP》第6章PHP中的数组和数据结构.ppt





《《细说PHP》第6章PHP中的数组和数据结构.ppt》由会员分享,可在线阅读,更多相关《《细说PHP》第6章PHP中的数组和数据结构.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章 PHP中的数组和数据结构回顾回顾vPHPPHP中的函数都有哪些优越性?中的函数都有哪些优越性?v如何定义一个函数?如何定义一个函数?vPHPPHP变量的范围?变量的范围?v我们都有哪些自定义函数的形式?我们都有哪些自定义函数的形式?预习检查预习检查vPHPPHP中都有哪些数组?中都有哪些数组?vPHPPHP中数组的定义方式?中数组的定义方式?vPHPPHP数组的遍历都有哪些?数组的遍历都有哪些?本章任务本章任务v1.1.数组的分类数组的分类v2.2.数组的定义数组的定义v3.3.数组的遍历数组的遍历v4.4.预定义数组预定义数组v5.5.数组的相关处理函数数组的相关处理函数v6.6.操
2、作操作PHPPHP数组需要注意的一些细节数组需要注意的一些细节1 1 数组的分类数组的分类 PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。因为可以用另一个 PHP 数组作为值,也可以很容易地模拟树。v所谓的数组下标可以视为资料内容在此数组中的识别名称,通常被称为数组下标。v当索引值为数值时,也代表此资料内容在数组中的储存位置。v数组中有几个索引值就被称为几维数组。v数组分类:数组分类:在在PHPPHP中有两种数组:中
3、有两种数组:索引数组和关联数组。n索引(indexed)数组的索引值是整数,以0开始。当通过位置来标识东西时用索引数组。n关联(associative)数组以字符串做为索引值,关联数组更像操作表。索引值为列名,用于访问列的数据。2 2 数组的定义数组的定义v2.1 2.1 直接赋值的方式声明数组直接赋值的方式声明数组v2.2 2.2 使用使用array()array()语言结构新建数组语言结构新建数组v2.3 2.3 多维数组的声明多维数组的声明v数组常用的赋值方式:数组常用的赋值方式:由于 PHP 是属于弱类型数据,因此源代码中的数组并不需要经过特别的声明操作,直接将一组数值指定给某一数组元
4、素即可。一般情况下数组的赋值有两种方式:直接赋值方式直接赋值方式 如:n$a0=;n$a1=;使用使用arrayarray函数函数 如:n$a=array(“,”);2.1 2.1 直接赋值的方式声明数组直接赋值的方式声明数组v直接赋值格式:直接赋值格式:$数组变量名数组变量名 索引值索引值=资料内容资料内容其中索引值(下标)可以是一个字符串或一个整数。等价于整数(不以0开头)的字符串值被当作整数对待。因此,数组$array3与$array3是引用相同的元素。但是$array03引用的另外不同的元素。v一维数组一维数组数组中索引值(下标)只有一个的数组称为一维数组。在数组中这是最简单的,也是最
5、常用的了。?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中所有元素的下标和值同时输出每个
6、元素的类型 print_r($contact2);/输出数组$contact2中所有元素的下标和值 var_dump($contact2);/输出数组$contact2中所有元素的下标和值同时输出每个元素的类型 =valuevalue,.),.)/keykey 可以是可以是 integerinteger 或者或者 stringstring /valuevalue 可以是任何值可以是任何值 vkey 可以是 integer 或者 string。如果键名是一个 integer 的标准表达方法,则被解释为整数(例如“8”将被解释为 8,而“08”将被解释为“08”)。key 中的浮点数被取整为 in
7、teger。PHP 中没有不同的数字下标和关联下标数组,数组的类型只有一种,它可以同时包含整型和字符串型的下标。v如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。v实例:实例:aaa,1=bbb,2=ccc);$d=array(aaa,6=bbb,ccc);$e=array(name=zhang,age=20);?2.3 2.3 多维数组的声明多维数组的声明v二维数组的声明v多维数组的声明方式及规则,与一维数组相同,例如:下面二维数组的声明片段:v这时数组中的资料内容如下:v如果以 array 语法声明,则如下程序片段:v
8、 array(1,高某,A公司,北京市,(010)98765432,),上海联系人=array(2,洛某,B公司,上海市,(021)12345678,),天津联系人=array(3,峰某,C公司,天津市,(022)24680246,),重庆联系人=array(4,书某,D公司,重庆市,(023)13579135,);echo 第一个联系人的公司:.$contact102.;/输出A公司 echo 上海联系人的EMAIL:.$contact2上海联系人5.;/输出 array(array(1,高某,市场部经理,5000.00),array(2,洛某,职员,3000.00),array(3,峰某,
9、职员,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);print_r($wage市场部);/访问数组$wage中的第一个元素 print_r($wage市场部1);/访问数组$wage市场部中的第二个元素 print_r($wage市场部13);/访问数组$wage市场部1中的第四个元素,输出30
10、003 3 数组的遍历数组的遍历v3.1 3.1 使用使用forfor语句循环遍历数组语句循环遍历数组v3.2 3.2 使用使用foreachforeach语句遍历数组语句遍历数组v3.3 3.3 联合使用联合使用list()list()、each()each()和和whilewhile循环遍历循环遍历数组数组v3.4 3.4 使用数组的内部指针控制函数遍历数组使用数组的内部指针控制函数遍历数组3.1 3.1 使用使用forfor语句循环遍历数组语句循环遍历数组?php /使用array()语句将联系人列表中第一条记录声明成一维数组$contact$contact=array(1,高某,A公司
11、,北京市,(010)98765432,);/以表格的形式输出一维数组中的每个元素 echo;echo 联系人列表;echo;/以html的th标记输出表格的字段名称 echo 编号姓名公司地址电话EMAIL;echo;/使用for循环输出一维数组中的元素 for($i=0;$i count($contact);$i+)echo .$contact$i.;/循环一次输出数组中的一个元素 echo;3.2 3.2 使用使用foreachforeach语句遍历数组语句遍历数组vforeachforeach循环结构:循环结构:foreach 仅用于数组,有两种语法。foreach(array_expr
12、ession as$value)foreach(array_expression as$value).statement.statementforeach(array_expression as$key=$value)foreach(array_expression as$key=$value).statement.statement第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给$value 并且数组内部的指针向前移一步v第二种格式做同样的事,只除了当前单元的键值也会在每次循环中被赋给变量$key。注:当 foreach 开始执行时,数组内部的指针
13、会自动指向第一个单元。此外注意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,郑某,财务部经理,4500.00),array(2,王某,职员,2000.00),array(3,冯某,职员,1500.0
14、0);/使用三层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.3 3.3 联合使用联合使用list()list()、each()each()和和whilewhi
15、le循环遍历数组循环遍历数组varray each(array array)array each(array array)返回 array 数组中当前指针位置的键值对并向前移动数组指针。键值对被返回为四个单元的数组,键名为 0,1,key 和 value。单元单元 0 0 和和 key key 包含有数组单元的键名,包含有数组单元的键名,1 1 和和 value value 包含包含有数据有数据。如果内部指针越过了数组的末端,则 each()返回 FALSE。each()经常和list()结合使用来遍历数组。vvoidvoidlist(mixed.)list(mixed.)它不是真正的函数,而
16、是语言结构。list()用一步操作给一组变量进行赋值。注:list()仅能用于数字索引的数组并假定数字索引从0开始。在执行 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
17、中第二个元素的键/值对,是带有4个元素的数组 print_r($name);/输出Array(1=高某 value=高某 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.
18、n;/两个变量值是数组中前两个元素的值 list(,$power)=$info;/跳过前两个只将数组中第三个元素转为变量 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$ke
19、y:$value;/输出每个元素的键/值对 echo;3.4 3.4 使用数组的内部指针控制函数遍历数组使用数组的内部指针控制函数遍历数组v数组指针的控制函数数组指针的控制函数由于数组是由多笔资料集合而成,所以当程序需要运算处理其中某个索引位置的资料内容时,会由数组之中内定的指针,指向目标资料,以提供程序作正确的读取。下面针对数组指针控制的相关函数,作简单的说明介绍:vnext()next()、prev()prev()、end()end()及及 reset()reset()这四个函数可以控制目前数组中的指针位置。next()负责将指针向后移动,prev()负责将指针向前移动;end()会将指针
20、指向数组中最后一个元素,而 reset()函数则会将目前指针无条件移至第一个索引位置。v语法格式:语法格式:mixed next(mixed next(数组名称数组名称);mixed prev(mixed prev(数组名称数组名称);mixed end(mixed end(数组名称数组名称);mixed reset(mixed reset(数组名称数组名称);mixed mixed keykey(数组名称数组名称);mixed mixed currentcurrent(数组名称数组名称);”运算符指定了每个元素的字符串下标$contact=array(ID=1,姓名=高某,公司=A公司,地址
21、=北京市,电话=(010)98765432,EMAIL= );/数组刚声明时,数组指针在数组中第一个元素位置 /使用key()和current()函数传入数组$contact,返回数组中当前元素的键和值 echo 第一个元素:.key($contact).=.current($contact).;/第一个元素 echo 第一个元素:.key($contact).=.current($contact).;/数组指针没动 next($contact);/将数组$contact中的指针向下一个元素移动一次,指向第二个元素的位置 next($contact);/将数组$contact中的指针向再下一个
22、元素移动一次,指向第三个元素的位置 echo 第三个元素:.key($contact).=.current($contact).;/第三个元素 end($contact);/再将数组$contact中的指针移动到最后,指向最后一个元素 echo 最后一个元素:.key($contact).=.current($contact).;/最后一个元素 prev($contact);/将数组$contact中的指针倒回一位,指向最后第二个元素 echo 最后第二个元素:.key($contact).=.current($contact).;/最后第二个元素 reset($contact);/再将数组$
23、contact中的指针重置到第一个元素的位置,指向第一个元素 echo 又回到了第一个元素:.key($contact).=.current($contact).;/第一个元素4 4 预定义数组预定义数组v4.1 4.1 服务器变量:服务器变量:$_SERVER$_SERVERv4.2 4.2 环境变量:环境变量:$_ENV$_ENVv4.3 HTTP GET4.3 HTTP GET变量:变量:$_GET$_GETv4.4 HHTP POST4.4 HHTP POST变量:变量:$_POST$_POSTv4.5 request4.5 request变量:变量:$_REQUEST$_REQUES
24、Tv4.6 HTTP4.6 HTTP文件上传变量:文件上传变量:$_FILES$_FILESv4.7 HTTP Cookies:4.7 HTTP Cookies:$_COOKIE$_COOKIEv4.8 Session4.8 Session变量:变量:$_SESSION$_SESSIONv4.9 Global4.9 Global变量:变量:$_GLOBALS$_GLOBALS4.1 4.1 服务器变量:服务器变量:$_SERVER$_SERVERv$_SERVER 是一个包含诸如头信息(header)、路径(path)和脚本位置(script locations)的数组。数组的实体由 web
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 细说PHP 细说 PHP 中的 数组 数据结构

限制150内