第2章 PHP基础(语法、数据类型、控制语句及练习题、答案)课件_第1页
第2章 PHP基础(语法、数据类型、控制语句及练习题、答案)课件_第2页
第2章 PHP基础(语法、数据类型、控制语句及练习题、答案)课件_第3页
第2章 PHP基础(语法、数据类型、控制语句及练习题、答案)课件_第4页
第2章 PHP基础(语法、数据类型、控制语句及练习题、答案)课件_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、php网站开发基础,任课教师:,第2章 PHP基础知识,本节课学习要点 1.掌握PHP代码基本语法 2.掌握基本的编码规范 3.熟练PHP程序的组成、基本格式与输出语句,2020年7月21日,3,2.1 PHP语法基础,2.1.1 PHP标记风格 Web服务器通过标记识别PHP代码的开始和结束,标记之间的所有文本都被解释为PHP语句,标记之外的文本被认为是HTML语句。 标准的PHP标记风格如下: ,2020年7月21日,4,2.1 PHP语法基础,2.1.2 PHP程序注释 PHP支持3种风格的程序注释(注释中不要出现PHP标记符号)。 1、单行注释 以“/”开始的注释 2、多行注释 包含在

2、“/*” 和“*/”之间的注释 3、shell风格的注释 以“#”开始的注释,2020年7月21日,5,2.1 PHP语法基础,例2-1 3种注释,2020年7月21日,6,2.2 PHP数据类型,PHP 支持8种原始类型: 4种标量类型:boolean(布尔型)、string(字符串)、integer(整型)、float/double(浮点型); 2种复合类型:array(数组)、object(对象); 2种特殊类型:resource(资源)、NULL(空)。,2020年7月21日,7,2.2 PHP数据类型,2.2.1 标量数据类型 1、布尔型(boolean) 布尔型是PHP中常用的数据

3、类型,通常用于条件表达式或循环表达式中,其值为true或false。 例2-2 布尔型数据 运行结果:变量$a的值为true,2020年7月21日,8,2.2 PHP数据类型,2、字符串型(string) 字符串由数字、字母和符号组成。字符串中的每一个字符占1个字节。字符串有3种定义形式:单引号(),双引号(“),界定符()。 PHP中用“.”来连接字符串或字符串变量。,2020年7月21日,9,2.2 PHP数据类型,区别: 单引号包含的变量按普遍字符输出。 双引号包含的变量按其实际值输出。 例2-3 单、双引号字符串对比输出 运行结果:变量$s的值是:ABC123,2020年7月21日,1

4、0,2.2 PHP数据类型,界定符字符串定义格式 $变量名=开始界定符 单行或多行字符串 结束界定符 注意: 结束界定符必须另起一行且在行首,前面不许有空格及其他字符。,2020年7月21日,11,2.2 PHP数据类型,例2-4 界定符字符串定义及输出, I will JDF; echo $str; ?, $i的内容为:$i std; ?,运行结果: ok,hello I will,运行结果: 这和双引号没有什么区别,$i同样可以被输出。 $i的内容为:显示该行内容,2020年7月21日,12,2.2 PHP数据类型,字符串中的字符也可以用数组索引的形式来表示。 例2-5 字符串中字符以数组

5、元素形式输出 运行结果:,2020年7月21日,13,2.2 PHP数据类型,3、整型(integer) 整型类型只包含整数。整数可以用十进制、八进制、十六进制表示,有效范围是:(-2147483648,+2147483647)。 如果在八进制中出现非法数字(8和9),则非法数字及其后面的数字被忽略。,2020年7月21日,14,2.2 PHP数据类型,例2-6 整数不同进制形式输出,; echo 10进制的结果是:.$str1.; echo 8进制的结果是:; if($str2=$str3) echo $str2=$str3=.$str2; else echo $str2=.$str2.与$

6、str3=.$str3.结果不同; echo ; echo 16进制的结果是:.$str4; ?,运行结果:,2020年7月21日,15,2.2 PHP数据类型,4、浮点型(float/double) 浮点数据类型用来保存小数。PHP4以前版本中,浮点型的标示为double,PHP4以后改为float。doub与float没有区别。 浮点型数据书写格式: 标准格式:3.14,-0.257 科学计数格式:314E-2,-2.57E1,2020年7月21日,16,2.2 PHP数据类型,2.2.2 复合数据类型 1、数组(array) 一组数据集合,形成一个可操作数据体。数组中每个数据称为一个元素

7、,元素包含索引和值两个属性。 元素索引:由数字或字符串组成 元素值:可以是任意数据类型的数据 2、对象(object) 通过new运算得到一个类的对象。,2020年7月21日,17,2.2 PHP数据类型,2.2.3 特殊数据类型 1、资源(resource) 资源是一种特殊变量,又叫句柄,保存到外部资源的一个引用。 例如:同时有多个数据库连接存在时,要进行查询和关闭连接等操作,必须指明某个操作是对应哪个连接的。因此给每个连接赋予一个标识值,一般是整数,这种标识值的数据类型称为资源型。,2020年7月21日,18,2.2 PHP数据类型,2、空值( NULL) 表示没有为变量设置任何值。NUL

8、L 类型唯一的值就是“NULL”。 在下列情况时一个变量的值是NULL: 被赋值为NULL; 尚未被赋值; 被执行unset()方法。,2020年7月21日,19,2.2 PHP数据类型,2.2.4 数据类型转换 PHP在变量定义方面比较自由,因此PHP被称为弱类型语言,也称为动态语言。PHP数据类型转换有3种方式: 1. 自动转换(运算符); 2. 强制转换; 3. setType()方法转换。,2020年7月21日,20,2.2 PHP数据类型,1. 自动转换 定义变量时不需指定数据类型,PHP会根据具体引用变量的具体应用环境,将变量转换为合适的数据类型。 例2-7 自动转换,; echo

9、 1+经验; ?,运行结果:,2020年7月21日,21,2.2 PHP数据类型,2. 强制转换 将某个类型的数据强制转换为括号内指定类型的数据。,2020年7月21日,22,2.2 PHP数据类型,A.强制转换为整型的转换规则,2020年7月21日,23,2.2 PHP数据类型,B.强制转换为浮点型的转换规则 注:某些运算虽然结果看上去是整型,但实际是浮点型。,2020年7月21日,24,2.2 PHP数据类型,C.强制转换为布尔型的转换规则,2020年7月21日,25,2.2 PHP数据类型,D.强制转换为数组的转换规则,2020年7月21日,26,2.2 PHP数据类型,E.强制转换为对

10、象的转换规则,2020年7月21日,27,2.2 PHP数据类型,F.强制转换为字符串型的转换规则,2020年7月21日,28,2.2 PHP数据类型,3. setType()方法转换 setType()方法将指定的变量转换成指定的数据类型。 语法: setType(要转换的变量名,目标数据类型),2020年7月21日,29,2.2 PHP数据类型,例2-8 setType()方法转换,; echo 强制转换后变量$num的值是:.$num; echo ; echo 使用setType()方法转换变量$num的数据类型,settype($num,.integer.)的值是:; echo set

11、type($num,integer); echo ; echo setType()方法转换后变量$num的值.$num; ?,运行结果:,2020年7月21日,30,2.3 PHP常量及其应用,2.3.1 常量声明 常量名由字母、数字、下划线组成,首字符不能是数字。 常量声明语法: define(常量名,常量值,大小写敏感参数) 说明: 声明时,常量名和常量值必须给出 大小写敏感参数的值为逻辑值,默认为false,表示大小写敏感;若值为true,则表示大小写不敏感。,2020年7月21日,31,2.2 PHP数据类型,例2-9 常量声明的大小写敏感参数,; echo mage1; define

12、(Mage2,abc); echo ; echo mage2; ?,运行结果:,2020年7月21日,32,2.3 PHP常量及其应用,2.3.2 使用常量 常量可赋给某个变量,通过变量来使用常量;也可以直接通过常量名使用该常量。 通过变量获取常量值语法 $变量名=常量名 constant($变量名),2020年7月21日,33,2.2 PHP数据类型,例2-10 获取常量值,; $name=CCUT; echo 通过变量获得的常量CCUT的值是:.constant($name); ?,运行结果:,2020年7月21日,34,2.3 PHP常量及其应用,2.3.3 系统预定义常量 PHP可通过

13、系统预先定义的常量获取相关信息(系统常量见教材P20)。 例2-11 系统常量,当前行数是:._LINE_; echo 当前PHP版本信息是:.PHP_VERSION; echo 当前操作系统核心版本是:.PHP_OS; ?,运行结果:,2020年7月21日,35,2.4 PHP变量及其应用,2.4.1 变量名称 变量名称遵循以下规定: (1)变量名必须以美元符号$开始; (2) 变量名开头可以以下划线开始; (3) 变量名不能以数字字符开头; (4) PHP的变量名区分大小写;,2020年7月21日,36,2.4 PHP变量及其应用,2.4.2 变量赋值 1、直接赋值 PHP中定义变量时不需

14、要指定变量的类型,系统会根据变量的值决定其类型。 通过赋值运算符为变量直接赋值。 如果定义变量时没有为变量赋初值,那么在使用变量时,系统会根据变量在语句中所处的位置确定其类型,并为该变量赋一个与其类型匹配的默认值。字符串类型的初值为空值,整型类型的初值为0;布尔型的初值为false。,2020年7月21日,37,2.3 PHP常量及其应用,例2-12 变量默认初始值示例,$boo2的默认初始值是true; else echo $boo2的默认初始值是false; ?,运行结果:,2020年7月21日,38,2.4 PHP变量及其应用,2、变量间赋值 当变量1定义并赋值后,将变量1赋给变量2称为

15、变量间赋值。赋值后,两个变量使用各自的内存,互不干扰。 语法格式: $变量2 =$变量1,2020年7月21日,39,2.4 PHP变量及其应用,例2-13 变量间赋值示例,; echo $str2; ?,运行结果:,2020年7月21日,40,2.4 PHP变量及其应用,3、引用赋值 引用赋值是指通过“ $str1=长春工业大学; echo 改变后的$str1的值是:.$str1; echo 改变后的$str1的值是:.$str2; ?,运行结果:,2020年7月21日,42,2.4 PHP变量及其应用,2.4.3 可变变量 一个变量的值作为另一个变量的名称,这种形式称为可变变量。可变变量通

16、过在一个变量名前使用两个“$”符号实现 语法格式: $变量2 =$变量1,2020年7月21日,43,2.4 PHP变量及其应用,例2-15 可变变量赋值示例,运行结果:,44,2020年7月21日,2020年7月21日,44,2.5 PHP运算符,运算符 php运算符包括算术运算符、比较运算符、条件运算符、字符串运算符、赋值运算符、位运算符、递增运算符或递减运算符等。,45,2020年7月21日,2020年7月21日,45,2.5 PHP运算符,2.5.1 算术运算符 1、除(/):多数情况下结果为浮点数。 特例:当两个操作数都是整数(或字符串转换成的整数)并且正好能整除时,得到的结果是整数

17、。 2、取模(%) :当被除数是负数时,得到的结果是负数。,46,2020年7月21日,2020年7月21日,46,2.5 PHP运算符,2.5.1 算术运算符,47,2020年7月21日,2020年7月21日,47,2.5 PHP运算符,2.5.2 比较运算符 1、=和!=只考虑数值是否相同,不考虑数据类型 2、=和!=既考虑数值是否相同,也考虑数据类型是否相同,48,2020年7月21日,2020年7月21日,48,2.5 PHP运算符,2.5.3 条件运算符 条件运算符不用于两个语句或程序的选择,一般用于根据一个表达式在另外两个表达式中选一个。通常将条件表达式放在括号内。 语法 表达式1

18、?表达式2:表达式3 规则 当表达式1为真时,执行表达式2,否则执行表达式3,49,2020年7月21日,2020年7月21日,49,2.5 PHP运算符,2.5.4 字符串运算符 PHP程序中的字符串运算符是“.”,起作用是将前后两个字符串连接为一个新字符串。 注意:“+”在PHP中并不是字符串连接运算符,50,2020年7月21日,2020年7月21日,50,2.5 PHP运算符,2.5.5 赋值运算符,51,2020年7月21日,2020年7月21日,51,2.5 PHP运算符,2.5.6 自增、自减运算符,52,2020年7月21日,2020年7月21日,52,2.5 PHP运算符,2

19、.5.7 位运算符,53,2020年7月21日,2020年7月21日,53,2.5 PHP运算符,2.5.8 逻辑运算符,2020年7月21日,54,2.3 PHP常量及其应用,例2-12_1 逻辑运算符优先级,$c1的值是;var_dump($c1); ?,运行结果: $c1的值是true,原因: 1、“=”的优先级高于“and”,因此先把$a1的值赋给$c1,此时$c1的值是true;然后再用$c1和$b1做“and” 运算。 2、先计算$a2 and $b2,值为false,然后把该值赋给 $c2;因此$c2的值是false,$c2的值是;var_dump($c2); ?,运行结果: $

20、c2的值是false,2020年7月21日,55,2.3 PHP常量及其应用,例2-12_2 逻辑运算符优先级,$c1的值是; var_dump($c1);/输出带有数据类型的变量值 ?,运行结果:,原因: 1、“=”的优先级高于“xor”,因此先把$a1的值赋给$c1,此时$c1的值是true;然后再用$c1和$b1做“xor” 运算。 2、先计算$a2 xor $b2,值为false,然后把该值赋给 $c2;因此$c2的值是false,$c2的值是; var_dump($c2); ?,运行结果:,2020年7月21日,56,2.3 PHP常量及其应用,练习: 1、已知三个数10,18,6,

21、写出程序求出3个数的最大值。 2、已知长和宽分别是8和6,计算长方形的面积。,2、尝试说出下列代码的运行结果。 const A=50; const B=123; const C=A+B=; $d=A+B; echo C.$d; 3、尝试说出以下代码的运行结果 const A=50; const A=A+15; echo A;,1、尝试说出以下代码中各个表达式的运算结果。 $a=6; $b=7; $c=$a+10*$a; $d=$a+; $e=+$a; $f=$a+(+$a); $g=+$a-$b-;,2.3语句结构顺序结构、分支结构,顺序语句,举例: $a=6; $b=7; $c=$a+10*

22、$a; $d=$a+; echo $a,$b,$c,$d;,2.3语句结构顺序结构、分支结构,条件语句,1、if语句 if语句是许多高级语言中重要的控制语句 if(expr) statement 如果某个条件成立,就做某件事情。,我是吴亦凡的粉丝!; $a=芦苇; if($a=芦苇) echo 我是鹿晗的粉丝!; if($a=梅格妮) echo 我是吴亦凡的粉丝!; echo 我不是鹿晗的粉丝!; if($a=芦苇) echo 我不是吴亦凡的粉丝!; echo 我是鹿晗的粉丝!; ?,2.3语句结构顺序结构、分支结构,2、if.else语句 if(expr) statement 1; else

23、 statement 2;,2.3语句结构顺序结构、分支结构,举例: $a=梅格妮; if($a=梅格妮) echo 我是吴亦凡的粉丝!; else echo 我不是吴亦凡的粉丝!; ,2.3语句结构顺序结构、分支结构,3、if.elseif.else语句 if(expr1) statement 1; else if(expr2) statement 2; else if(expr3) statement 3; . else statement n;,2.3语句结构顺序结构、分支结构,例如: $score=85; if($score=90,2.3语句结构顺序结构、分支结构,4、switch语句

24、 switch语句和前面讲到的if.elseif.else类似,也是根据不同的条件执行不同的语句。 switch(variable) case val1: .; break; case val2: .; break; case val3: .; break; . default: .; ,2.3语句结构顺序结构、分支结构,例: 计算m月d日,是今年的第几天。 提示:定义的三个变量$month=6;$day=20;$sum=0;,2.3语句结构顺序结构、分支结构,练习: 1、写一个程序判断该年是否为闰年。(4年一闰,百年不闰,四百年再闰) 2、用switch写一个程序判定每个月份有多少天?(2月

25、按28天即可,不必计算闰月)。 3、写一个程序计算,某年某月某日是该年的第多少天。,2.3语句结构顺序结构、分支结构,循环语句是在满足条件的情况下反复地执行某一个操作。 在php中,提供了4个循环控制语句,分别是while循环语句、do-while语句、for循环语句和foreach循环语句。,2.4语句结构循环结构,1.while循环语句 如果条件成立,while 语句将重复执行代码块。 语法: while (表达式) 语句块; 当表达式非0值时,执行while语句中的内嵌语句; 当表达式为0时,则不执行while语句中的内嵌语句。 特点:先判断表达式,后执行语句。,2.4语句结构循环结构,

26、1.while循环语句 例:输出1-5数字 ; $i+; ?,2.4语句结构循环结构,2.do.while循环语句 do.while语句也是循环控制语句中的一种,使用方式和while相似,也是通过判断表达式的值来输出循环语句。 语法: do 语句块; while(表达式) 该语句的操作流程是:先执行一次指定的循环语句,然后判断表达式的值,当表达式的值为非0时,返回重新执行循环语句。如此反复,指到表达式的值等于0时为止,循环结束。,2.4语句结构循环结构,3.for循环语句 如果您已经确定了代码块的重复执行次数,则可以使用 for 语句。 语法: for (initialization; con

27、dition; increment) code to be executed; for 语句有三个参数。第一个参数初始化变量,第二个参数判断条件,第三个参数包含执行循环所需的增量。如果 initialization 或 increment 参数中包括了多个变量,需要用逗号进行分隔。而条件必须计算为 true 或者 false。,2.4语句结构循环结构,3.for循环语句 例:使用for循环来计算2-100所有偶数之和。 $sum=0; for($a=0;$a=100;$a+=2) $sum=$sum+$a; echo 结果为:.$sum;,2.4语句结构循环结构,4.foreach循环语句 f

28、oreach循环控制语句自php4开始被引入,主要用于处理数组,是遍历数组的一种简单方法。如果将该语句用于处理其他的数据类型或者初始化的变量,将会产生错误。该语句的语法有两种格式: foreach (array as $value) 循环语句; 或者 foreach (array as $key=$value) 循环语句; ,2.4语句结构循环结构,4.foreach循环语句 例 :遍历数组 $arr=array(one, two, three); foreach ($arr as $value) echo Value: . $value . ; ,2.4语句结构循环结构,例:九九乘法表,2.

29、4语句结构循环结构,1、break跳转语句 break关键字可以终止当前的循环,包括 while、do.while、for、foreach和switch在内的所有控制语句。 break语句不仅可以跳出当前的循环,还可以指定跳出几重循环。 格式为: break n; 参数n指定要跳出的循环数量。 2、continue跳转语句 程序执行break后,将跳出循环,而开始继续执行循环体的后续语句。continue跳转语句的作用没有break那么强大,只能终止本次循环,而进入下一次循环中。在执行continue语句后,程序将结束本次循环的执行,并开始下一轮循环的执行操作。continue也可以指定跳出几

30、重循环。,2.5语句结构跳转语句,3、goto语句 goto操作符可以用来跳转到程序中的某一个指定位置。该目标位置可以用目标名称加上:来标记。 php中的goto是有一定限制的,它无法跳转到任何 循环或者switch结构中。常见的用法是用来跳出循环或者switch。可以代替多层的break。 当然php中的goto还有别的限制,如只能在同一个文件和作用域中跳转,也就是说你无法跳出一个函数或者类方法,也无法跳入到另一个函数。 4、return语句 还有一种跳转语句叫做return语句,会跳出当前函数。我们会在后面的章节里讲解。,2.5语句结构跳转语句, ; for($b=1;$b$a*$b=.$

31、a*$b.; echo ; ? ,2.5语句结构跳转语句,for($a=1;$a; for($b=1;$b$a*$b=.$a*$b.“; echo “;,for($a=1;$a; for($b=1;$b$a*$b=”.$a*$b.“; echo ;,1.思考如何做一个某年的日历。 (需要用到循环的知识),2.6思考题,1.求1-100的奇数和 2.用循环输出 3.输出50以内能被3整除的数 4.求半径从1-10的圆的面积,并且将大于100的面积输出,2.6思考题,程序在开发的过程中,常常需要重复进行某种操作或者处理,如果每次执行相同的操作都要重新写一遍相同的代码,那样会造成系统资源极大的浪费。

32、而且可维护性会很差,比如说一个操作需要改进,程序中有多处使用相同的代码,那么改动一个小小的地方,都要浪费很大的力气,写很多重复的代码也会降低开发的效率。函数就是为了解决这些问题而设计的。 PHP中函数分为系统函数和用户自定义函数两类。 PHP拥有多达162个系统函数库,包含着数量超过1000的系统函数。 PHP也可以根据需要自定义函数。,2.7函数,1.函数的定义和调用 函数是一种可以在任何被需要的时候执行的代码块。 格式: function fun_name($str1,$str2.$strn) fun_body; function是声明自定义函数时必须用到的关键字。 fun_name自定义

33、函数的名字。函数名要符合php的命名规范。 $str1函数的参数。参数可以是一个,也可以是多个,也可以没有。但是小括号不能省略。 fun_body是自定义函数的主体,是功能实现部分。,2.7函数,1.函数的定义和调用 ; writeMyIdol(); writeMyIdol(); writeMyIdol(); echo 重要的事情说三遍; ?,2.7函数,2.函数的参数 定义时的参数称为形式参数,简称形参; 调用时的参数称为实际参数,简称实参 例: function hello($str) /形式参数 echo hello $str; hello(EXO ); /实际参数,2.7函数,2.函数

34、的参数 默认参数就是函数的参数列表中的若干参数指定了值,如果调用函数时不传入对应的值则函数会接受默认参数的值,这样可以避免调用时出现没有参数的错误。也可以使一些程序显得更加合理。如果传入对应的参数,就会替换默认参数。 例: function tvplay($str=后宫甄嬛传) echo 我喜欢看:.$str; tvplay(); tvplay(伪装者);,2.7函数,2.函数的参数 默认参数 例: function tvplay($t1,$t2=好先生,$t3=十宗罪) echo 我喜欢的电视剧是:.$t1; echo 你喜欢的电视剧是:.$t2; echo 他喜欢的电视剧是:.$t3; t

35、vplay(琅玡榜);,2.7函数,3.函数参数的传递 可以通过参数向函数传递信息。参数类似变量。参数被定义在函数名之后,括号内部。可以添加任意多参数,只要用逗号隔开即可。 参数传递的方式有3种: 按值传递 按引用传递 默认参数,2.7函数,3.函数参数的传递 (1)值传递 实参值赋给形参,函数调用后实参值不变。 例: function example($m) $m=$m*$m+10; echo 在函数内,$m的值是:.$m; $m=3; example($m); echo 在函数外,$m的值是:.$m;,2.7函数,3.函数参数的传递 (2)引用传递 按引用传递就是将实参的内存地址传递到形参

36、中。这时,在函数内部的所有操作都会影响到实参的值,返回后实参的值会发生相应的变化。引用传递方式就是在传值时在原基础上加,2.7函数,3.函数参数的传递 (3)默认参数(可选参数) 还有一种设置参数的方式,默认参数即可选参数。可以指定某个参数为可选参数,将可选参数放在参数列表的末尾,并且指定其默认值为空。 例:已知原价,计算出售价格。 function values($price,$tax= ) $price=$price+$price*$tax; echo 出售价格:.$price; values(100,0.25); values(100);,2.7函数,4.函数的返回值 通常,函数将返回值

37、传递给调用者的方式是使用关键字return。 return()将函数的返回值返回给函数的调用者,即将程序控制权返回到调用者的作用域。如果在全局作用域内使用return()关键字,那么将终止脚本的执行。 return函数只能返回一个参数,即只能有一个返回值,不能一次返回多个。 例: function values($price,$weight) return $price=$price*$weight; echo 总金额是:.values(5.8,100);,2.7函数,5.函数中变量的作用域 变量需要先定义后使用,但这不是可以随时使用变量的。变量需要在作用范围内才可以使用,即变量的作用域。 在

38、函数中定义的变量称为局部变量,在函数外定义的变量称为全局变量。 如果希望函数内部使用函数外部的变量,需要在函数内部使用关键字global修饰变量。,2.7函数,$var=100;/此处$var是全局变量 function test() echo 在函数内部var的值:.$var; /在函数内容部调用全局变量$var test(); /无效调用,$var=100;/此处$var是全局变量 function test() global $var;/在test()范围内,使用函数外面的变量 echo 在函数内部var的值:.$var; test(); /有效调用,6.可变函数 可变函数也称作变量函数

39、。如果一个变量名后有圆括号,php将寻找与变量的值同名的函数,并且将尝试执行它。这样就可以将不同的函数名称赋予同一个变量,赋予变量哪个函数名,在程序中使用变量名并在后面加上圆括号时,就调用哪个函数执行,类似面向对象中的多态特性。可变函数还可以被用于实现回调函数、函数表等。 例:可变函数 function a($a,$b) return $a+$b; function b($a,$b) return $a*$a+$b*$b; function c($a,$b) return $a*$a*$a+$b*$b*$b; $result=“c”; / $result=“a”; $result=“b“;可分

40、别调用a和b两个函数 echo “运算结果是:”.$result(2,3);,2.7函数,注意:可变函数在实际编程中使用可增加程序的灵活性,但是滥用可变函数会降低PHP代码的可读性,使程序逻辑难以理解,给代码维护带来不便,所以在编程过程中尽量少用或不用可变函数。,7. 递归函数 递归函数即自调用函数,在函数体内直接或间接地自己调用自己。 例:使用递归函数实现1-n的和: function getSum($n) if($n=1) /满足条件,递归结束 return 1; $temp=getSum($n-1); return $temp+$n; echo “sum=”.getSum(4);/调用递

41、归函数,打印出1-4的和,2.7函数,课后练习:,2.7函数,除了用户自行编写的函数库外,php自身也提供了很多内置的函数。 在 PHP 中,提供了超过 700 个内建的函数。 判断一个编程语言的功能强弱,可以从他的库函数入手。一个较好的编程语言,必然有较强的库函数。 常用函数: explode():将字符串分割成数组 implode():将字符数组拼接成一个新的字符串 strcmp():字符串比较操作 str_replace():取代所有在字符串中出现的字串。 substr():从指定的字符串str中按照指定的位置start截取一定长度length的字符。 strlen():获取指定字符串的

42、长度 trim():删除字符串前后的空白,2.8 内置函数,1. array explode(string $separator,string $str,int $limit)/字符串分割 例: $str=apple,pear,banana,orange; $arr=explode(,$str); echo 分割结果为:; print_r($arr); 例: $str=apple,pear,banana,orange; $arr=explode(“,”,$str,2); echo 分割结果为:; print_r($arr);,2.8 内置函数,2.string implode(string $

43、glue,array $arr) /字符串连接 例: $fruit_arr=array(apple,pear,banana,orange); $fruit_str=implode(/-1:负数为str2大于str1,2.8 内置函数,4. mixed str_replace(mixed $search,mixed $repalce,mixed $subject,2.8 内置函数,5. string substr(string $str,int $start,int $length)/字符串截取 例: $str=This is a string; $str1=substr($str,0,4);/

44、从第一个字符开始,截取4个字符 echo str1为:.$str1.; $str2=substr($str,0);/从第一个开始,截取到末尾 echo str2为:.$str2.; $str3=substr($str,0,-4);/从第一个开始,直到字符串末端第4个字符 echo str3为:.$str3.; $str4=substr($str,-1);/从字符串末端返回1个字符 echo str4为:.$str4.;,2.8 内置函数,注意:一个中文占三个字符 $s1=hello,大家好,我的专业我很喜欢; $s2=str_replace(我,他,$s1,$count); echo $s2.

45、; echo $count; $s3=substr($s2,6,9); echo $s3;,6 strlen():获取指定字符串的长度 例: $str1=abcd; $str2=中文字符串; echo str1的长度为.strlen($str1).; echo str2的长度为.strlen($str2).; /一个中文字符的长度为3 7.trim():删除字符串前后的空白 例: $str= hello world! “; echo 未调用前.$str.; echo 调用后.trim($str).;,2.8 内置函数,$str1=abcd; $str2= 中文字符 串 ; $s3=trim($

46、str2); echo str1的长度为.strlen($str1).; echo $str2; echo $s3;,在WEB程序开发时,经常涉及日期和时间管理,例如:记录新闻的发而战时间、购买商品时下订单时间,计算页面的执行时间等,PHP提供了强大的日期和时间处理函数,可以满足各种需求 1.UNIX时间戳 PHP提供了UNIX时间戳用于解决时间运算的问题。 UNIX时间戳是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。以32位二进制数来表示,其中1970年01月01日零点也叫UNIX纪元。 UNIX时间戳在许多操作系统 中广泛使用,UNIX时

47、间戳不能为负数。将日期和时间转换为时间戳使得PHP中的日期和时间计算变得简单。 PHP提供了mktime()函数用于返回一个指定时间的时间 戳: (1) int mktime(int $hour,int $minute,int $second, int $month,int $day ,int $year,int $is_dst ) 该函数返回值是一个UNIX时间戳,参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。 $is_dst:是否为夏时制时间,1为是,0为不是,默认值为-1(不知道是否为夏时制)PHP5.1起,本参数已废弃,2.9 日期和时间管理,mktime()函

48、数应用: /省略参数,则使用当前时间 echo date(Y-m-d H:i:s,mktime(); /指定小时,其他值使用当前时间 echo date(Y-m-d H:i:s,mktime(14); /指定时分秒,月日年 echo date(Y-m-d H:i:s,mktime(14,28,56,4,10,2015); 注:date()用于格式化输出时间,2.9 日期和时间管理,mktime()函数应用: 案例说明: 1.异常处理,因为没有设置时区,所以会出现警告。加了后不显示警告的内容。 2.年份可以是4位也可以是2位。 如果是0-69,对应2000-2069 如果是70-100 对应19

49、70-2000 3.如果对时间要求不精确,可以赋值为0. 4.可以从右向左省略参数。 5.参数为空,返回当前的时间戳。,2.9 日期和时间管理,2016年9月27日9点9分9秒转换为UNIX时间戳为:; echo mktime(9,9,9,9,27,2016); echo 2016年9月27日9点9分9秒转换为UNIX时间戳为:; echo mktime(9,9,9,9,27,16); echo 2016年9月27日9点9分9秒转换为UNIX时间戳为:; echo mktime(0,0,0,9,27,16); echo 今天9点9分9秒转换为UNIX时间戳为:; echo mktime(9,9

50、,9); echo 此时的UNIX时间戳为:; echo mktime(); ?,(2)计算时间差 UNIX时间戳的优势就在于通用性,不会因为国家或者地区的不同而出现不兼容的情况。而由于它是表示秒数,虽然看起来头疼,但是用于计算时间差就非常方便。 举例:,2.9 日期和时间管理,$year=1990; $month=10; $day=19; $bir=mktime(0,0,0,$month,$day,$year); $now=mktime(0,0,0); $m=$now-$bir; $t=(int)($m/(60*60*24); echo 到现在为止我已经过了大约.$t.天;,2.获取时间 (

51、1)获取系统当前时间 int time(void); PHP默认时区设置是UTC(Universal Time Coordinate ,全球标准时间),与英国伦敦时间相同,而北京位于东八区,所以获取当前时间会出现8个小时的时差,如果要正确显示北京时间,需要修改时区设置,通常有两种修改方法: 1)修改PHP配置文件 如果有Web服务器的权限,修改php.ini中的date.timezone配置,例如将默认时区设置为PRC(中华人民共和国 Peoples Republic of China )。 date.timezone=PRC 注:修改完成date.timezone配置后,需要重启服务器,2.

52、9 日期和时间管理,2.获取时间 2)在程序中使用函数设置 如果没有服务器权限,可以在程序中使用date_default_timezone_set()函数来设置时区 bool date_default_timezone_set(string $timezone_identifier) 在函数中,返回值类型是bool型,timezone_identifier用于指定时区标识符,可以”PRC”、“Asia/Shanghai”、“Asia/Chongqing”等,例如将默认时间设置为上海: 设置为中华人民共和国:,2.9 日期和时间管理,date_default_timezone_set(Asia/

53、Shanghai); echo date(Y年n月d日 H:i:s,time();,date_default_timezone_set(PRC); echo date(Y年n月d日 H:i:s,time();,3.获取用户提交的时间 实际开发中,如果需要获取用户提交的表单时,表单中的时间通常是使用日期选择控件获得的字符串,如“2014-5-4 17:20:55” 使用strtotime()函数,用于将字符串转化为时间戳。 int strtotime(string $time,int $now); 参数$time用于指定日期时间字符串, $now用于计算相对时间的参考点,如果省略则使用系统当前时

54、间。 输出时间戳:,2.9 日期和时间管理,date_default_timezone_set(PRC); echo date(Y-m-d H:i:s,strtotime(2014-5-10 17:20:55);,date_default_timezone_set(PRC); echo strtotime(now);,3.获取用户提交的时间,2.9 日期和时间管理,date_default_timezone_set(PRC); echo(strtotime(now) . ); echo(strtotime(15 October 1980) . ); echo(strtotime(+5 hour

55、s) . ); echo(strtotime(+1 week) . ); echo(strtotime(+1 week 3 days 7 hours 5 seconds) . ); echo(strtotime(next Monday) . ); echo(strtotime(last Sunday);,date_default_timezone_set(PRC); echo date(Y-m-d H:i:s,strtotime(now) . ; echo date(Y-m-d H:i:s,strtotime(15 October 1980) . ; echo date(Y-m-d H:i:s,strtotime(+5 hours) . ; echo date(Y-m-d H:i:s,strtotime(+1 week) . ; echo date(Y-m-d H:i:s,strtotime(+1 week 3 days 7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论