PHP程序设计课程教案.pdf
教师备课教案课程名称:PHP程序设计任课教师:XXXX教学单位:科技学院教 研 室:计算机应用教研室-:PHP概述与定义【教 学 目 的 与 要 求】1.知 识 目 标:要求学生了解PHP语言的优势、2.能 力 目 标:使 学 生 掌 握 PHP开发环境搭建【重点 与 难 点】重 点:PHP开发环境搭建难 点:PHP程序开发流程【教 学 方 法 及 手 段】媒 体 演 示 法、案例教学法【教 学 时 数】4 课时【教学 内 容 与 教 学 过 程】认识PHPPHP最初是由Rasmus Lerdorf于 1994年为了维护个人网页而编写的一个简单程序。这个程序用来 显 示 Rasmus Lerdorf的个人履历以及统计网页流量,因此最初称为个人主页(Personal Home Page)。后来受到GNU的影响,它更名为PHP(Hypertext Preprocessor,超文本预处理器)。PHP是全球网站使用最多的脚本语言之一,从最初的PHP/FI到现在的P H P 7,经过多次的重写和扩展,与 Linux、Apache和 MySQL共同组成了一个强大的Web应用程序平台(简称LAMP)。PHP作为服务器端Web程序开发语言,主要有以下两方面原因:PHP是一种服务器端、HTML嵌入式的脚本语言,因此适合Web开发。PHP是 B/S(Browser/Server,浏览器/服务器)架构,即服务器启动后,用户可以不使用客户端软件,而是使用浏览器进行访问,这种方式既保持了图形化的用户界面,又大大减少了应用程序的维护量。PHP语言优势PHP之所以成为目前最流行的服务器端Web程序开发语言之一,是因为它具有很多优势,具体如下所示。1.跨平台PHP几乎支持所有的操作系统平台,如 Windows、UNIX、Linux等。此外,还支持多种Web服务器,如 Apache、Hs等2.开源免费PHP是开源且免费,此外,LAMP平台中的Linux、Apache、MySQL都是免费软件,这可以为网站开发者节省一部分开支。3.面向对象PHP支持面向对象程序设计,因此可以用来开发大型商业程序。另外,PHP也支持面向过程程序设计。4.支持多种数据库PHP支持多种数据库,如 MySQL、Oracle、SQLServer等,其中MySQL是网站开发首选的数据2库,它与PHP是黄金组合。5.易学习 PHP的应用领域全球有60%的网站都在使用PHP技术进行开发,包括Facebook、谷歌、百度、新浪等国内外一线互联网公司。PHP正吸引着越来越多的Web开发人员,其应用领域非常广泛,如网站开发、0A办公系统、电子商务、CRM管理系统、ERP系统、手机APP接口及API接口、页游后台、服务器脚本等。二:PHP编程基础【教学目的与要求】1.知 识 目 标:要求学生了解PHP基本语法、掌握变量与常量、熟悉数据类型转换、掌握运算符与表达式、掌握流程控制语句2.能 力 目 标:要求学生掌握PHP基本语法、掌握变量与常量、熟悉数据类型转换、掌握运算符与表达式、掌握流程控制语句【重点与难点】重点:变量与常量、数据类型转换、PHP运算符、表达式与语句、流程控制语句难点:数据类型转换、表达式与语句、流程控制语句【教学方法及手段】媒体演示法、案例教学法【教学时数】3 0 课时【教学内容与教学过程】()PHP基本语法 PHP标记PHP和其他Web语言一样,都是用一对标记将PHP代码包含起来,以便和HTML代码区分开来。PHP支持4 种风格的标记,如表所示。标记风格开始标记结束标记XML风格简短风格Script风格ASP风格在表中,每种标记风格都有各自的开始标记和结束标记。3 P H P 注释注释即对程序代码的解释,在写程序时需适当使用注释,以方便自己和他人理解程序各部分的作用。在执行时,它会被PHP解释器忽略,因此不会影响程序的执行。PHP支持C+、C、Shell三种风格的注释。LC+风格的单行注释该注释是从“/”开始,到该行末尾或PHP结束标记之前结束。2.C 风格的多行注释该注释从“/*”开 始,到“*/”结束。3.Shell风格的单行注释该注释是从“铲开始,到该行末尾或PHP结束标记之前结束。此外,在 PHP脚本中还可以使用多行文档注释(从“/*”开始,到“*/”结束),它能快速生成具有相互参照、索引等功能的API文档。由于初学阶段暂时用不到此种注释,此处只需了解即可。P H P 标识符与关键字在现实生活中,每种事物都有自己的名称,从而与其他事物区分开。在 PHP语言中,同样也需要对程序中各个元素命名加以区分,这种用来标识变量、函数、类等元素的符号称为标识符。PHP语言规定,标识符是由字母、数字和下划线组成的,并且只能是以字母或下划线开头的字符集合。在使用标识符时应注意以下几点:命名时应遵循见名知义的原则。系统已用的关键字不得用作标识符。关键字虽然可作为变量名使用,但容易造成混淆,不建议使用。关键字是系统已经定义过的标识符,在程序中已有了特定的含义,如 echo、class等,因此不能再使用关键字作为其他名称的标识符。andorxorifelseforfbreachwhiledoswitchcasebreakcontinuedefaultaselseifdeclareendifendforend fbreachendwhileendswitchenddeciarearraystaticconstclassextendsnewexceptionglobalfunctionexitdieechoprintevalissetunsetreturnlistuseincludeinclude_oncerequirerequire_onceimplementsinterfacevarpublicprotectedprivateabstractclonetrycatchthrowfinally(二)P H P 变量变量的定义在使用淘宝购物时,用户使用购物车来存储想购买的物品,等到所有的物品都挑选完成后,选择支付即可,在进行支付时,系统首先将每件物品的数据存储起来,再对这些数据进行累加。在 PHP4中,若要存储数据,就需要用到变量。变量的赋值是通过=来表示的,进行支付时是每个变量值相加的过程。在 P H P 中,变量是由$和变量名组成的,并且变量的命名规则与标识符相同。但需注意,变量名是区分大小写的。为了更充分利用内存空间,P H P 可以为不同的数据指定不同的数据类型。P H P 支 持 8 种数据类型厂标量类型l boolean(布尔型)integer(整型)float(浮点型)L string(字符串型),array(数更)发合类型匚西(对象)r-resoisce(资源)LNULL(空值)变量类型l.boolean(布尔型)布尔型是PHP中较常用的数据类型之一,该类型数据只能为true或 false(true表示真,false表示假,这两个值是不区分大小写的)$bool=true;$Bool=False;/将true值赋给变量$bool/将False值赋给变量$Bool2.integer(整型)整型表示存储的数据是整数,例 如 1、-1 等。在计算机语言中,整型数据可以用二进制、八进制、十进制、十六进制表示,并且在前面加上+或-表示正整数或负整数。如果用二进制表示,数字前必须加上0b或 0B;如果用八进制表示,数字前必须加上0;如果用十六进制表示,数字前必须加上Ox或0 X,具体示例如下:$a=-OblOlO;/二进制数,等价于十进制数-10$b=-012;/八进制数,等价于十进制数-10$c=-10;/十进制数-10$d=-OxA;/十六进制数,等价于十进制数TO5二进制数是由0、1组成,每 逢2进1位;八进制数是由07的数字序列组成,每 逢8进1位;十六进制数是由09的数字和A-F的字母组成序列,每 逢16进1位。此处需注意,整型数值有最大取值范围,它的范围与平台有关。3.float(浮点型)浮点型表示存储的数据是实数,它的取值范围也与平台有关。在PHP中,浮点型数据默认有两种书写格式,具体示例如下:$fl=12.34;/标准格式$f2=31.4E-2;/科学计数法格式,等价于0.314$f3=3.14E2;/$f3的数据类型为float4.string(字符串型)字符串是一系列的字符,就是一个字符串。字符串可以使用单引号、双引号、定界符三种形式来定义。虽然三种形式都可以定义一个字符串,但它们却有本质的不同。1)单引号形式该形式就是将字符序列用单引号括起来。如果需要在字符串中表示一个单引号,则需要使用转义字符(,也称反斜杠)转义。如果需要在字符串中表示反斜杠,则需要使用两个反斜杠。止 匕 外,单引号这种形式的字符串只能转义单引号和反斜杠。PHP中常见的转义字符如表所示。转义字符含义n换 行 符(ASCH字符集中的L F 或 OxOA(10)r回 车 符(ASCII字符集中的C R 或 OxOD(13)t水 平 制 表 符(ASCII字符集中的H T 或 0 x09(9)v垂 直 制 表 符(ASCH字符集中的V T 或 OxOB(11)eEscape(ASCH 字符集中的 ESC 或 OxlB(27)f换 页(ASCII字符集中的FF或 OxOC(12)反斜线$美元符号V双引号()-71,3用八进制符号表示一个字符,如101表示字符Ax0-9A-Fa-fl,2用十六进制符号表示一个字符,如我4 1 表示字符A2)双引号形式该形式就是将字符序列用双引号括起来,可以转义一些字符,还可以将字符串的变量名替换为变量值(即可以解析其中包含的变量)。3)定界符6字符串的另一种形式是使用定界符()。该形式在。之后提供一个标识符用来表示开始,然后是包含的字符串,最后是用同样的标识符表示结束字符串。注意,结束标识符必须从行的第一列开始,并且后面除了分号不能再包含其他任何字符。定界符形式的字符串可以很容易定义较长的字符串,因此通常用于从文件或数据库中大段地输出文档。检测数据类型在PHP中,变量的类型是由存储的数据决定的。为了检测变量所赋的值是否符合期望的数据类型,PHP中内置了一些检测数据类型的函数,如表所示。函数功能is_bool()检测变量是否为布尔型is_int()检测变量是否为整型is_float()检测变量是否为浮点型is_string()检测变量是否为字符串型is_array()检测变量是否为数组型is_object()检测变量是否为对象型is_resource检测变量是否为资源型is_null()检测变量是否为空值is_numeric()检测变量是否为数字或数字组成的字符串(三)PHP常量常量的定义及获取变量是指在程序执行过程中值可以变化的量,常量是指在程序执行过程中值不变的量,例如圆周率 n 就可以定义为常量。在 PHP中,常量是通过define。函数来定义的,其语法格式如下:b o o l define(s t r i n g$n a m e,m i x e d$v a l u e ,b o o l$c a s e _ i n s e n s i t i v e =f a l s e )该函数有三个参数,具体如表所示。参数说明Sname必选参数,指定常量名,即标识符Svalue必选参数,指定常量值,允许标量、NULL、array类型$case_insensitive可选参数,默认为false,表示大小写敏感,若设置为tru e,表示大小不敏感另外,m ixed说明一个参数可以接受多种不同的(但不一定是所有的)类型。7获取常量的方法有两种:一种是直接使用常量名获取对应的值,另一种是使用constant。函数获取对应的值。,constant。函数的语法格式如下:mixd constant(string$nam)参数$name为需要获取常量的名称,也可以为存储常量名的变量。该函数调用成功,返回常量值,否则提示常量没有被定义。defined。函数可以判断一个常量是否已定义,其语法格式如下:bool defined(string$name)参数$name为需要判断的常量名,若该常量已定义,则返回tru e,否则返回false。(四)PHP运算符 算术运算符运算符(也称操作符)是用来对数据进行操作的符号,操作的数据称为操作数。运算符根据操作数的个数可分为一元运算符、二元运算符、三元运算符。运算符根据其功能可分为算术运算符、赋值运算符、比较运算符、逻辑运算符等。算术运算符用来处理简单的算术运算,包括加、减、乘、除、取余等。在使用算术运算符时,需注意以下几点:当有多种运算符参与运算时,先乘除,后加减。当有浮点型数据参与前四种运算时,运算结果的数据类型为浮点型。当进行取余运算时,运算结果的正负取决于左操作数的正负。赋值运算符的作用就是将常量、变量或表达式的值赋给某一个变量。除此之外,还有几种特殊的赋值运算符,如表所示。运算符说明示例结果=赋值$a=5;$b=2;$a 为 5,$b 为 2+=加等于$a=5;$b=2;$a+=$b;$a 为 7,$b 为 2-=减等于$a=5;$b=2;$a-=$b;$a 为 3,$b 为 2*=乘等于$a=5;$b=2;$a*=$b;$a 为 10,$b 为 2/=除等于$a=5;$b=2;$a/=$b;$a 为 2.5,$b 为 2%=余等于$a=5;$b=2;$a%=$b;$a 为 1,$b 为 2=连接等于$a=*q*;$b=T;$a.=$b;$2为 ,Sb 为 f8 字符串运算符.称为字符串运算符,可以将两个字符串连接成一个新的字符串。?p h p$a=3.1 4 ;$b=6 6 6 ;$c=$a.$b;v a r _ du m p ($c);$d=$a+$b;v ar _ du m p($d);$a.=$b;v ar _ du m p($a);?自加/自减运算符自加运算符(+)使其操作数递增1,自减运算符(-)使其操作数递减1。自加、自减运算符可以在变量的前面,也可以在变量的后面,在变量前面的称为前置,在变量后面的称为后置,如表所示。示例说明结果$a=2;$b=+$a;前置自加,先自加,再参与其他运算$a 为 3,$b 为 3$a=2;$b=$a+;后置自加,先参与其他运算,再自加$a 为 3,$b 为 2$a=2;$b=$a;前置自减,先自减,再参与其他运算$a 为 1,$b 为 1$a=2;$b=Sa-;后置自减,先参与其他运算,再自减$a 为 1,$b 为 2PHP还可以对字符串作自加操作,并且只支持纯字母 心 2 和人 2)。比较运算符比较运算符就是对变量或表达式的结果进行比较。如果比较结果为真,则返回tru e,否则返回false,具体如表所示。9运算符说明示例结果=等于5=3fals e!=、不等于5 !=3t r u e=恒等5 =5t r u ei=不恒等5 !=5.0t r u e大于5 3t r u e=大于等于5=3t r u e小于53fals e=小于等于5 函数的定义在 PHP中,函数就是将重复使用的功能写在一个独立的代码块中,在需要时进行单独调用,其语法格式如下:fu n ctio n 函数名(参数名:H=值1 ,参数名2 =值2,.)函数体re tu rn 返回值;)函数的语法格式说明如下:(1)function函数名(参数名1=值 1,参数名2 =值 2,为函数头,由关键字function、函数名和参数列表三部分组成。(2)函数名与变量命名规则基本相同,但函数名不区分大小写。(3)函数体位于函数头之后,用花括号括起来,代表这是一个函数的功能区间。(4)用方括号口括起来的部分表示可选填,即参数列表与返回值是可选的,其他部分是必须存在的。函数的调用当函数定义完成后,如果需要使用函数的功能,就需要调用函数。函数的调用十分简单,前面的章节中多次调用系统内置函数,调用自定义函数的方法与它类似,其语法格式如下:函数名(参数名1 =值 1 ,参数名2 =值 2 ,.)函数调用只需引用函数名并赋予正确的参数即可。函数的参数参数列表是由一系列参数组成,每个参数是一个表达式,用逗号隔开。在调用函数时,如果需要15向函数传递参数,则被传入的参数称为实参,而函数定义时的参数称为形参,实参与形参需要按对应顺序传递数据。参数传递的方式有按值传递、按引用传递和默认参数。1.按值传递按值传递就是将实参的值赋给对应的形参,在函数内部操作的是形参,因此操作的结果不会影响到实参。(-)变量的作用域变量需要先定义后使用,但这并不意味着变量定义后就可以随便使用,只有在它的作用范围中才可以被使用,这个作用范围称为变量的作用域。总体来说,变量根据定义的位置分为局部变量和全局变量。A局部变量局部变量是在函数内部定义的变量,其作用域仅限于函数内部,离开该函数后再使用此变量是非法的。另外,函数定义中的普通形参由于只能在本函数内部使用,因此也是局部变量。A全局变量全局变量是指在函数外部定义的变量,其作用域从变量定义处开始,到本程序文件末尾结束。此处需注意,函数中的局部变量会屏蔽全局变量,因此在函数中无法直接访问全局变量。若在函数中需要访问全局变量,可以使用global关键字修饰变量。此外,$GLOBALS数组也可以在函数中访问全局变量。它是一个包含了全局作用域中可用的全部变量的数组,数组中的键就是变量名。A静态变量静态变量是一种特殊形式,它的特性是普通变量不具备的,下面介绍静态变量。局部变量从存储方式上可分为动态存储类型和静态存储类型。函数中的局部变量默认都是动态存储类型,即在函数调用结束后自动释放存储空间。但有时希望在函数结束后,局部变量依然保存在内存中,这时就需要使用static关键字。static修饰的变量称为静态变量,其存储方式为静态存储,即在第一次调用函数时该变量被初始化,下次调用函数时该变量的值并不会消失。(三)函数的高级用法A可变函数一个变量的值可以为另一个变量的名称。此外,一个变量的值还可以是一个函数的名称,这就是可变函数。该变量名后加上圆括号,就可以执行与其值同名的函数,因此可变函数也称为变量函数。A引用函数返回值引用不仅可以用于普通变量、函数参数,还可以用于函数的返回值,此时只需在函数名前添加&符号。此处需注意,在调用函数时,引用函数返回值需要在函数名前添加&符号,用来说明返回的是一个引用。161?php2function&test()3static$b=0;/定义一个静态变量4echo+$b.*1;5return$b;67$a=test();/$b 的值为 18$a=5;9$a=test();/$b 的值为 210$a=&test();/$b 的值为 311$a=5;12$a=test();/$b 的值为 613?A函数的嵌套调用PHP语言允许在函数定义中出现函数调用,从而形成函数的嵌套调用。1?php2 function output()/输出信息3 echo 调用。utput()函数;4)5 function test()6 echo,test()函数开始!?,7 output();/调用 output。函数8 echo$1()函数结束0;9)10 test();11?A函数的递归调用在函数的嵌套调用中,一个函数除了可以调用其他函数外,还可以调用自身,这就是函数的递归调用。递归必须要有结束条件,否则会无限地递归。171 06 转化为递归函数:7 f(0)=18 f(n)=n*f(n-1)r n 09*/10 function fact($n)/计算阶乘11 if($n=0)/结束条件12 return 1;13 return$n*fact($n-1);14)15 echo 14!=1.fact(4);16?回调函数在调用函数时,除了传递普通的变量作为参数外,还可以将另一个函数作为参数传递到调用的函数中,这就是回调函数。若要自定义一个回调函数,可以使用可变函数来实现,即在函数定义时参数是一个普通变量,但在函数体中使用这个参数变量时加上圆括号,就可以调用和这个参数值同名的函数。1?php2function add($a,$b)/计算加法3echo”$a+$b=($a+$b),*f;45function sub($a,$b)/计算减法6echo”$a-$b=($a-$b).!;78function mul($a,$b)/计算乘法9echo”$a*$b=($a*$b).10)11function div($a,$b)/计算除法12echo”$a/$b=($a/$b).,1;1314function calculate($a,$b,$operation)/回调函数15 if(!is_callable($operation)16 echo,参数operation必须是函数名组成的字符串!;17 return false;18 19$operation($az$b);20 21 calculate(3,2,add);22 calculate(3,2,sub);23 calculate(3Z 2,mul*);24 calculate(3,2,div);25?除了使用可变函数实现回调函数外,还可以使用call_user_func_array()函数来实现回调函1 8数。它是P H P 中的内置函数,其语法格式如下:m ixed call_user_func_array(callable$callback,array$param _arr)其中,第一个参数表示需要调用的函数名,此处需要传递一个字符串;第二个参数是一个数组类型的参数,表示调用函数的参数列表。四:数组【教 学 目 的 与 要 求】1 .知 识 目 标:要求学生掌握数组的概念、掌握数组的定义、掌握数组的操作、熟悉数组的常用函数2 .能 力 目 标:要求学生掌握数组的概念、掌握数组的定义、掌握数组的操作、熟悉数组的常用函数【重 点 与 难 点】重 点:数组的操作、数组的常用函数难 点:数组的操作、数组的常用函数【教 学 方 法 及 手 段】媒 体 演 示 法、案例教学法【教 学 时 数】8课时【教 学 内 容 与 教 学 过 程】(一)数组的概念与定义数组的概念假如要存储6 0 名学生的成绩,如果使用变量来存储成绩,就需要定义6 0 个变量,显然这个定义的过程相当耗费时间与精力,P H P 语言提供了数组来存储这6 0 名学生的成绩。数组是一个可以存储一系列数值的数据结构。数组中的每个元素分为两部分:键(k e y)和值(v a l u e),其 中 键(也称为数组的下标)为元素的识别名称,值为元素的内容。键与值存在着一种对应关系,例如上述每名学生的学号就可以用数组的键表示,成绩就是键所对应的值。在 P H P 中,根据键的数据类型,数组分为索引数组与关联数组,具体如下所示。1.索引数组所谓索引数组就是键为整数的数组,其键默认从0开始并依次递增1。它通常使用在用位置来索引数组元素的值,具体如图所示。19键(key)0 12 3 4值(value)68 75 89 98 80在图中,索引数组中的键都为整数,值可以为任意数据类型,每个键都有对应的值。另外,键可以为指定整数,如果不指定,则默认从0 开始。2.关联数组所谓关联数组是指键为字符串的数组,通常使用在存储一系列具有逻辑关系的数据,具体如图所z j O键(key)id name age*score,值(value)68,小千,18 100在图中,数组中每个元素的键与值之间存在着逻辑关系,例如,学生学号(id)为 6 8,姓名(name)为小千,年 龄(a g e)为 1 8,分 数(score)为 100。数组的定义对数组的概念有所了解后,接下来就需要定义数组,通常有两种方式:一种是直接为数组元素赋值,另一种是使用array语句。(-)数组的操作A数组输出var_dump()函数可以输出数组中每个元素与值的数据类型。此外,print。函数也可以输出数组中所有元素。如果只需要输出数组中某个元素的值,则可以通过键来获取对应的值。因为键是数组元素的唯一标识,而键与值之间是映射关系,具体语法格式如下:_ S数组名 键例如,获取$arr2中诃所对应的值,可以写成如下形式;$arr2*id,除了可以使用口外,还可以使用 ,具体如下所示:$arr2*id,A数组删除unset语句可以删除整个数组,也可以删除数组的某个元素。A数组运算运算是通过运算符和数据实现的。数组作为一种复合数据类型,自然也可以进行运算,具体如表所示。20运算符说明示例+联合Sarrl+$arr2=相等$arrl=$arr2=全等Sarrl=$arr2!=不等Sarrl!=$arr2不等$arrl$arr2!=不全等$arrl!=$arr2A数组遍历数组遍历是指依次访问数组中的每个元素,可以通过多种方法实现,具体如下所示。1 .通过f or e a c h 语句遍历数组在 P H P 中,f or e a c h 语句可以很方便地遍历数组,其语法格式如下:f or e a c h ($v a r i a b l e a s$k ey =$v a l u e)循环体其中,$v a r i a b l e表示需要遍历的数组,a s 是一个固定的关键字,键变量$k ey 是可选的,值变量$v a l u e是必选的。每次循环时,fo r ea c h 语句会把键赋值给$k ey,值赋值给$丫2 1 肥。此处需注意,$1 丫 和$丫 2 1 皿保存的键与值是通过值传递的方式赋值的。如果使用引用传递,只需在值变量前加上&即可,键变量是不能写成引用形式。2 .通过l i s t 语句和ea c h()函数遍历数组除了 fo r ea c h 语句可以实现遍历数组外,l i s t 语句与ea c h。函数结合起来也可以实现遍历数组。首先讲解l i s t 语句,其语法格式如下:array list(mixed$varname,mixed$.)l i s t 语句将索引数组键为0的值赋值给$v a r n a m e,后面依次类推。注 意 l i s t 语句中第一个变量对应的是键为0的值,依此类推。ea c h。函数接收一个数组,并将数组中的一个元素拆分为一个新数组,然后移向下一个元素。如果移动到超出数组范围,此时执行ea c h。函数,则函数返回fa l s e。3.通过数组指针遍历数组数组指针指向数组中的某个元素,默认指向数组中第一个元素。通过移动或改变指针的位置,就可以访问数组中的任意元素。P HP 中提供了一些数组指针函数,用于操作数组指针,如表所示。函数说明mixed current(array&$array)获取当前数组指针指向元素的值mixed key(array&$array)获取当前数组指针指向元素的键mixed prev(aiTay&$array)将当前数组指针倒回一位mixed next(array&$array)将当前数组指针向前移动一位mixed end(array&$array)将数组指针指向最后一个元素mixed reset(array&$array)将数组指针指向第一个元素21在表中,数组指针函数的参数都为需要操作的数组。通过这些函数可以移动数组指针,从而访问数组中的元素。(三)数组的常用函数A 计算元素个数count。函数可以统计数组中元素的个数,其语法格式如下:int count(mixed$var,int$mode=0)其中,$v a r 指定需要计算的数组;$m o d e为可选参数,其值为0 或 1 (默认为0)。如果将$m o d e设置为1,则该函数会递归计算多维数组中每个元素的个数。A 压入或弹出元素在编写程序时,有时需要在数组首尾压入或弹出元素,这时就可以使用下列函数进行操作,如表所示。函数说明mixed array_shift(array&$array)弹出数组中第一个元素mixed array_pop(anay&$array)弹出数组中末尾的元素int array_unshift(array&$array,mixed$var,mixed$.)在数组的开始处压入元素int array_push(array&$array,mixed$var,mixed$.)在数组的末尾压入元素A 移除重复值在数组中,元素的键都是唯一的,但值有可能相同。array_unique()函数可以移除数组中重复的值,其语法格式如下:array array_unique(array$array,int$sort_flags=SORT_STRING)其中,$a r r a y 为需要操作的数组;$s o r t _ fl a gs 规定排序类型,默认把每一项作为字符串来处理。A 数组排序在日常生活中经常需要用到排序,如商品按价格排序、学生成绩排序。排序通过调整位置,把杂乱无章的数据变成有序数据。sort。函数可以对数组中元素值进行排序,其语法格式如下:bool sort(array&$array,int$sort_flags=SORT_REGULAR)其中,$a r r a y 表示需要排序的数组;$s o r t _ fl a gs 为可选参数,其取值可以改变排序的行为。取值说明SORT_REGULAR正常排序元素值(不改变类型)SORT_NUMER1C元素值被作为数字来排序SORT_STRING元素值被作为字符串来排序SORT_LOCALE_STRING根据当前的区域设置来把元素值当作字符串排序另外,r s o r t()函数可以将数组中元素值按从大到小进行排序,其用法与s o r t。函数的用法类似。a s o r t ()函数在排序时数组中元素值对应的键将不会发生变化。22A 合并数组Aa r r a y _ m e r g e()函数可以将两个或多个数组合并成一个数组,其语法格式如下:array array_merge(array$arrayl,array$.)其中,参数列表中的参数表示需要合并的数组,返回值为合并后的数组。如果传入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。如果传入的数组中有相同的数字键名,则后面的值将不会覆盖前一个值,而是附加到前一个值的后面。如果传入一个索引数组,则键名会以连续方式重新索引。A 拆分数组array_chunk()函数可以将一个数组拆分成多个数组,其语法格式如下:a r r a y a r r a y _ c h u n k(a r r a y$i n p u t,i n t$s i z e ,b o o l$p r e s e r v e _ k e y s =f a l s e )其中,$input表示需要拆分的数组;$size表示拆分后每个数组的元素个数;$preserve_keys为false,表示拆分后的数组中元素的键从。开始依次往后;$preserve_keys为 tru e,表示拆分后的数组中元素保留原来的键名。A 反转数组array_reverse()函数可以将一个数组中元素反转,其语法格式如下:a r r a y a r r a y _ r e v e r s e(a r r a y$a r r a y ,b o o l$p r e s e r v e _ k e y s =f a l s e )其中,$array表示需要反转的数组;$preserve_keys为 false,表示不会保留数字的键;$preserve_keys为 tru e,表示会保留数字的键。此处需注意,非数字的键不受$preserve_keys值的影响,总是会被保留。五:面向对象【教学目的与要求】1.知 识 目 标:求学生理解面向对象的概念、掌握类与对象、掌握构造方法与析构方法、掌握类常量与静态成员、掌握继承性与多态性、掌握抽象类与接口2.能 力 目 标:求学生理解面向对象的概念、掌握类与对象、掌握构造方法与析构方法、掌握类常量与静态成员、掌握继承性与多态性、掌握抽象类与接口【重点与难点】重 点:类与对象、构造方法、析构方法、类常量、静态成员、继承、抽象类与接口、多态难点:继承、抽象类与接口【教学方法及手段】媒 体 演 示 法、案例教学法【教学时数】8 课时【教学内容与教学过程】23(一)对象与类的概念在现实世界中,随处可见的i种事物就是对象,对象是事物存在的实体,如学生、汽车等。人类解决问题的方式总是将复杂的事物简单化,于是就会思考这些对象都是由哪些部分组成的。通常都会将对象划分为两个部分,即静态部分与动态部分。顾名思义,静态部分就是不能动的部分,这个部分被称为“属性”,任何对象都会具备其自身属性,如一个人,其属性包括高矮、胖瘦、年龄、性别等。然而具有这些属性的人会执行哪些动作也是一个值得探讨的部分,这个人可以转身、微笑、说话、奔跑,这些是这个人具备的行为(动态部分),人类通过探讨对象的属性和观察对象的行为来了解对象。在计算机世界中,面向对象程序设计的思想要以对象来思考问题,首先要将现实世界的实体抽象为对象,然后考虑这个对象具备的属性和行为。例如,现在面临一名足球运动员想要将球射进对方球门这个实际问题,试着以面向对象的思想来解决这一实际问题 步骤如下。首先可以从这一问题中抽象出对象,这里抽象出的对象为一名足球运动员。然后识别这个对象的属性。对象具备的属性都是静态属性,如足球运动员有一个鼻子、两条腿、一双手等接着识别这个对象的动态行为,即足球运动员的动作,如跳跃、转球等,这些行为都是这个对象基于其属性而具有的动作。由此可见,类实质上就是封装对象属性和行为的载体,而对象则是类抽象出来的一个实例。这也是进行面向对象程序设计的核心思想,即把具体事物的共同特征抽象成实体概念,有了这些抽象出来的实体概念,就可以在编程语言的支持下创建类,因此,类是那些实体的一种模型,具体如图所示。在图中,通过面向对象程序设计的思想可以建立现实世界中具体事物、实体概念与编程语言中类、对象之间的一一对应关系。A面向对象的三大特征面向对象程序设计实际上就是对现实世界的对象进行建模操作。面向对象程序设计的特征主要可以概括为封装、继承和多态。1.封装封装是面向对象程序设计的核心思想。它是指将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。例如,计算机的主机是由内存条、硬盘、风扇等部件组成,生产厂家把这些部件用一个外壳封装起来组成主机,用户在使用该主机时,无须关心其内部的组成及工作原理。2.继承继承是面向对象程序设计提高重用性的重要措施。它体现了特殊类与一般类之间的关系,当特殊类包含了一般类的所有属性和行为,并且特殊类还可以有自己的属性和行为时,称作特殊类继承了一般类。一般类又称为父类或基类,特殊类又称为子类或派生类。例如,已经描述了汽车模型这个类的属性和行为,如果需要描述一个小轿车类,只需让小轿车类继承汽车模型类,然后再描述小轿车类特有的属性和行为,而不必再重复描述一些在汽车模型类中已有的属性和行为。3.多态24多态是面向对象程序设计的重要特征。生活中也常存在多态,例如,学校的下课铃声响了,这时有学生去买零食、有学生去打球、有学生在聊天。不同的人对同一事件产生了不同的行为,这就是多态在日常生活中的表现。程序中的多态是指一种行为对应着多种不同的实现。综上,面向对象的程序设计就是通过建立一些类以及它们之间的关系来解决问题。编程者要根据对象间的关系,建立类的体系,明确它们之间是构成关系还是类属关系,从而确定类之间是包含还是继承。面向对象程序设计的一个很大特点是支持代码的重用,这就要求可重用的类一定要抓住不同实体间的共性特征。当类的定义初步完成后,编程者就可以根据现实事物中对象的行为、对象之间的协作关系对具体工作细化模块,并对这些对象进行有机组装,也就是利用对象进行模块化编程。(二)类与对象A定义类在 PHP中把具有相同属性和行为的对象看成同一类,把属于某个类的实例称为某个类的对象。例如学生张三与李四是两个不同的对象,两者有共同的属性(如学号、成绩等),也有相同的行为(如选课、显示成绩等),因此两者同属于学生类。在类中,属性是通过成员变量实现的,而行为是通过成