《4函数和面向对象.ppt》由会员分享,可在线阅读,更多相关《4函数和面向对象.ppt(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、PHP 动态网站程序动态网站程序设计设计(第第2版版)唐四薪 主编 人民邮电出版社人民邮电出版社ISBN:978-7-115-50524-8 2020年年3月月4.1 PHP的内置函的内置函数数4.1 PHP的内置函数的内置函数v字符串处理函数字符串处理函数v日期和时间函数日期和时间函数v检验函数检验函数v数学函数数学函数4.1.1 字符串相关函数字符串相关函数v截取字符串截取字符串substr()v替换字符串替换字符串str_replace()strtr()v查找子串查找子串 strpos()strstr()4.1.1 字符串相关函数字符串相关函数vstrlen(string)返回字符串的长
2、度返回字符串的长度 strlen(abc8),返回,返回4 vtrim(string)去掉字符串两端的空格去掉字符串两端的空格 trim(abcd*),返回返回abcd*vltrim(string)、rtrim(string)去掉字符串左边或右边的空格去掉字符串左边或右边的空格 截取字符串函数截取字符串函数vsubstr(string,start,length)从字符串的第从字符串的第start个字符开始,取长为个字符开始,取长为length的的子串。如果省略子串。如果省略length,表示取到字符串的结尾,表示取到字符串的结尾,如果如果start为负数表示从末尾开始截取,如果为负数表示从末尾
3、开始截取,如果length为负数,则表示取到倒数第为负数,则表示取到倒数第length字符字符 substr(2010-9-6,5),返回,返回9-6substr(2010-9-6,2,4),返回,返回10-9substr(2010-9-6,2,-2),返回,返回10-9substr(2010-9-6,-3,3),返回,返回9-6 替换字符串函数替换字符串函数vstr_replace(find,replace,string,&count)替换字符串中的部分字符,将替换字符串中的部分字符,将find替换为替换为replacestr_replace(0747,*,13307473541)返回返回1
4、33*3541 如果有参数如果有参数count,还可获取替换了多少处,还可获取替换了多少处$arr=array(“blue”,“red”,“green”,“yellow”);str_replace(“red”,“pink”,$arr,$i);echo$i;/$i返回返回1数组数组替换字符串函数替换字符串函数vstrtr(string,find,replace)等量替换字符串中的部分字符,将等量替换字符串中的部分字符,将find替换为替换为replace,如果,如果find和和replace长度不同,则只替长度不同,则只替换两者中的较小者换两者中的较小者 strtr(“Hilla Warld”,
5、“ial”,“eo”)返回返回 Hello World(i替换成替换成e,a换成换成o)替换字符串函数替换字符串函数vsubstr_replace(string,replace,start,length)从字符串的第从字符串的第start个字符开始,用个字符开始,用replace替换替换长度为长度为length的字符,若省略的字符,若省略length,将替换到,将替换到结尾结尾 substr_replace(ABCabc,*,3),返回,返回ABC*substr_replace(ABCabc,*,3,2),返回,返回ABC*c 查找子串函数查找子串函数vstrpos(string,find,s
6、tart)用来查找子串用来查找子串返回子串返回子串find在字符串在字符串string中第一次出现的位置,中第一次出现的位置,如果未找到该子串,则返回如果未找到该子串,则返回false,如果有,如果有start参参数,表示开始搜索的位置。数,表示开始搜索的位置。strpos(ABCabc,bc),返回,返回4strpos(ABCabc,bc,5),返回,返回false 查找字符串函数查找字符串函数vstrstr(string,search)返回从返回从search开始,字符串的其余部分。如果未开始,字符串的其余部分。如果未找到所搜索的字符串,则返回找到所搜索的字符串,则返回 false str
7、str(ABCabc,ab),返回,返回abc 分割字符串函数分割字符串函数vstrtok(string,split)根据根据split指定的分隔符把字符串分割为更小的字指定的分隔符把字符串分割为更小的字符串,返回分隔符前面的子串符串,返回分隔符前面的子串$string=Hello world.Beautiful day today.;$token=strtok($string,);while($token!=false)echo$token;$token=strtok();比较字符串函数比较字符串函数vstrcmp(str1,str2)返回两个字符串比较的结果。返回两个字符串比较的结果。st
8、r1小于小于str2,比,比较结果为较结果为-1;str1等于等于str2,比较结果为,比较结果为0;str1大于大于str2,比较结果为,比较结果为1。strcmp(ABC,abc),返回,返回-1strcmp(abc,abc),返回,返回0strcmp(abc,aa),返回,返回14.1.1 字符串相关函数字符串相关函数vstr_repeat(string,repeat)把字符串重复指定的次数把字符串重复指定的次数 str_repeat(.,6),返回,返回“”v区分大小写区分大小写不区分大小写不区分大小写vstrpos()stripos(),strstr()stristr(),str_r
9、eplace()str_ireplace(),strcmp()strcasecmp()。v另外另外strchr()是是strstr()的别名。的别名。4.1.1 字符串相关函数字符串相关函数vstrip_tags(string,allow)去除字符串中的去除字符串中的HTML、XML、PHP标记标记 vchr(number)返回与指定返回与指定ASCII 码对应的字符码对应的字符 chr(0 x52),返回,返回R vord(string)返回字符串中第一个字符的返回字符串中第一个字符的ASCII 码码ord(h),返回,返回104 4.1.1 字符串相关函数字符串相关函数v strtolow
10、er($str):字符串转换为小写;:字符串转换为小写;v strtoupper($str):字符串转换为大写:字符串转换为大写v ucfirst($str):将函数参数的第一个字符转换:将函数参数的第一个字符转换为大写;为大写;v ucwords($str):将每个单词的首字母转换为:将每个单词的首字母转换为大写。大写。字符串函数的应用举例字符串函数的应用举例vstrpos()函数具有查找字符串中是否含有某个特函数具有查找字符串中是否含有某个特定子串的功能定子串的功能vstr_replace()函数除了可替换字符串中的字符外,函数除了可替换字符串中的字符外,如果替换后的字符串为空,则能过滤掉
11、被替换字如果替换后的字符串为空,则能过滤掉被替换字符串中的某些字符。符串中的某些字符。例例3.3 对查询关键词描红加粗对查询关键词描红加粗?$content=Web标准网页设计与标准网页设计与ASP;$find=网页设计网页设计;/假设这是查询关键词假设这是查询关键词$out=str_ireplace($find,$find,$content);echo$out.;?例例3.4检查用户输入的字符串并过滤非法字符检查用户输入的字符串并过滤非法字符?$Patternstr=黄黄|黑黑|走私走私|发票发票|枪支枪支|东突东突;$Pattern=explode(|,$Patternstr);$inpu
12、tstr=黑色黄色东突枪支弹药走私物品增值发票黑色黄色东突枪支弹药走私物品增值发票;for($i=0;$icount($Pattern);$i+)if(strpos($inputstr,$Pattern$i)!=false)$outstr=str_replace($Pattern$i,$inputstr);$inputstr=$outstr;echo$outstr.;?例例3.5 判断判断Email或或IP地址格式是否正确地址格式是否正确?$email=;if(strpos($email,)&strpos($email,.)&strpos($email,)strpos($email,.)ech
13、o Email格式正确格式正确;/判断判断IP地址是否正确,用到了地址是否正确,用到了explode函数函数$IP=59.51.24.54;$arr=explode(.,$IP);if(count($arr)=4)echo IP格式正确,格式正确,IP前两位为前两位为$arr0.$arr1.*.*;?4.1.2 日期和时间函数日期和时间函数vdate()函数,返回当前日期时间函数,返回当前日期时间语法为:语法为:date(string,stamp)echo date(Y-m-d);/输出输出2013-04-23echo date(y年年m月月d);/输出输出13年年04月月23echo dat
14、e(h:i:s);/输出输出10:44:46如果使用如果使用stamp参数,则可以设置时间参数,则可以设置时间 4.1.2 日期和时间函数日期和时间函数vgetdate()函数函数返回各种时间字段到数组中返回各种时间字段到数组中$today=getdate();print_r($today);echo$todaymon月月$todaymday日日;/mon和和mday是数组元素的索引值是数组元素的索引值 4.1.2 日期和时间函数日期和时间函数vtime()函数函数 返回当前时间的时间戳。所谓时间戳是指从返回当前时间的时间戳。所谓时间戳是指从1970/1/1日日0:0:0到指定日期所经过的秒数
15、到指定日期所经过的秒数?$nextWeek=time()+(7*24*60*60);/1周周=7天天*24小时小时*60分分*60秒秒echo 现在是:现在是:.date(Y-m-d).;echo 下一周是下一周是:.date(Y-m-d,$nextWeek);?4.1.2 日期和时间函数日期和时间函数v mktime()函数函数返回自行设置的时间的时间戳。与返回自行设置的时间的时间戳。与date()函数结函数结合使用可对日期进行加减运算及验证合使用可对日期进行加减运算及验证 语法为:语法为:int mktime(时时,分分,秒秒,月月,日日,年年)echo date(Y-m-d,mktime
16、(0,0,0,12,36,2012);echo date(Y-m-d,mktime(0,0,0,date(m),date(d)+12);4.1.2 日期和时间函数日期和时间函数vstrtotime()函数函数 可将日期时间(英文格式)解析为时间戳。其功可将日期时间(英文格式)解析为时间戳。其功能相当于能相当于date()函数设置时间的逆过程函数设置时间的逆过程 4.1.2 日期和时间函数日期和时间函数vcheckdate()函数函数 检验指定的日期是否为有效日期。检验指定的日期是否为有效日期。语法:语法:bool checkdate(月月,日日,年年)checkdate(10,3,2014)返
17、回返回true,因为,因为2014/10/3日是存在的。日是存在的。checkdate(13,3,2012)返回返回false 4.1.3 检验函数检验函数visset()函数函数 检查变量检查变量$var是否定义。如果变量已经定义,并是否定义。如果变量已经定义,并且其值不为且其值不为NULL,则返回,则返回true,否则返回,否则返回false。4.1.3 检验函数检验函数vempty()函数函数 用来检查变量是否为空。所谓变量为空包括两种用来检查变量是否为空。所谓变量为空包括两种情况:情况:变量未定义;变量未定义;变量的值为变量的值为“”、0、“0”、NULL、FALSE、以及空数组、没有
18、任何、以及空数组、没有任何属性的对象等属性的对象等 4.1.3 检验函数检验函数vunset()函数函数 用来取消变量用来取消变量var的定义。该函数的参数为变量名的定义。该函数的参数为变量名 4.1.3 检验函数检验函数vgettype()函数函数 返回变量或常量的数据类型返回变量或常量的数据类型 vvar_dump()函数函数 返回变量或常量的数据类型和值返回变量或常量的数据类型和值 vis_*()系列函数系列函数 is_string()、is_int()、is_float()、is_bool、is_null()、is_array()vsettype()函数函数 设置变量的数据类型(强制类
19、型转换)设置变量的数据类型(强制类型转换)4.1.3 检验函数检验函数veval()函数函数 动态执行参数内的动态执行参数内的PHP代码,该函数的参数是一代码,该函数的参数是一个字符串,个字符串,eval()会试着执行字符串中的代码。会试着执行字符串中的代码。4.1.4 数学函数数学函数v四舍五入值:四舍五入值:round(val,int precision)v取顶:取顶:ceil(val)v取底:取底:floor(val)v返回整数部分:返回整数部分:intval(val)v求绝对值:求绝对值:abs(num)v返回返回min到到max之间的伪随机数之间的伪随机数:rand(int min,
20、int max)4.2 自定义函数自定义函数及使用及使用函数函数Function函数函数Function参数1函数就像一台机器,这台机器的输入是一些函数就像一台机器,这台机器的输入是一些“原料原料”(对应函数的参数),进行加工后再把(对应函数的参数),进行加工后再把“结果结果”输出(通过输出(通过return语句)语句)参数2输出值return语句函数举例函数举例打爆米花打爆米花4.2.1 函数的定义函数的定义v函数的定义,语法:函数的定义,语法:function 函数名函数名(形参形参1,形参形参2,形参形参n)函数体函数体return 返回值返回值function 打爆米花打爆米花(粮食粮
21、食,糖精糖精)函数体函数体return 爆米花爆米花 输入输入输出输出函数练习函数练习v编写求两个数之和的函数编写求两个数之和的函数v编写将两个字符串连接起来的函数编写将两个字符串连接起来的函数3.5.1 函数的调用函数的调用v函数的调用方法:函数的调用方法:函数调用语句;函数调用语句;赋值语句;赋值语句;函数嵌套调用函数嵌套调用 3.函数调用语句函数调用语句v形式为:形式为:函数名函数名(实参实参1,实参实参2,实参实参n);v适用于调用没有返回值函数适用于调用没有返回值函数?function hello($n,$star)for($i=0;$i 函数调用语句举例函数调用语句举例 v例例3.
22、6 设计函数判断手机号码格式是否正确设计函数判断手机号码格式是否正确 4.赋值语句调用函数赋值语句调用函数v形式为:形式为:变量名变量名=函数名函数名(实参实参1,实参实参2,实参实参n);v适用于调用有返回值的函数,将返回值赋给一个变适用于调用有返回值的函数,将返回值赋给一个变量量 赋值语句调用函数举例赋值语句调用函数举例 v例例3.7 限制输出字符串的长度限制输出字符串的长度$n)return mb_substr($tit,0,$n,GB2312).;elsereturn$tit;$str=航空母舰辽宁舰航空母舰辽宁舰2012年完成舰载机着舰年完成舰载机着舰“$out=Trimtit($s
23、tr,14);/调用函数调用函数echo$out;?函数中只有一条函数中只有一条return语句会被执行,语句会被执行,return语句语句以后的函数代码将不会被执行以后的函数代码将不会被执行 赋值语句调用函数举例赋值语句调用函数举例 v例例3.8 替换特殊字符为字符实体替换特殊字符为字符实体?function myReplace($str)$str=str_replace(,>,$str);$str=str_replace(chr(13),$str);return$str;/返回函数值返回函数值$str=abc;/测试字符串测试字符串echo$str.;echo myReplace($
24、str);?函数的返回值是一个数组函数的返回值是一个数组 v例例3.9 设计一个函数,输入是一个整数,输出是设计一个函数,输入是一个整数,输出是这个整数各位上的数字这个整数各位上的数字=1;$i+)$arr$i=$num%10;$num=$num/10;return$arr;print_r(aval(54262);?5.函数的嵌套调用函数的嵌套调用v函数可以嵌套调用。例如:函数可以嵌套调用。例如:函数作为另一函函数作为另一函数的参数调用数的参数调用 例例3.10 过滤字符串中的过滤字符串中的HTML标记标记?/right函数:截取字符串函数:截取字符串$s右边的右边的$n个字符个字符funct
25、ion right($s,$n)return$n?substr($s,-$n):;function noHtml($str)while(strpos($str,)!=false)$begin=strpos($str,);$length=strlen($str)-$end-1;$filterstr=substr($str,0,$begin).right($str,$length);$str=$filterstr;return$str;/返回函数值返回函数值$str=abc;/测试字符串测试字符串echo noHtml($str);?3.5.2 变量函数和匿名函数变量函数和匿名函数v类似于可变变量
26、,它的函数名为变量类似于可变变量,它的函数名为变量$func=noHtml;echo$func($str);$func=right;echo$func($str,7);/相当于相当于echo right($str,7),输出结果为,输出结果为“”vPHP 5.3以上版本中,开始支持匿名函数以上版本中,开始支持匿名函数 3.5.3 传值赋值和传地址赋值传值赋值和传地址赋值v函数的参数赋值有两种方法:传值赋值和传地址函数的参数赋值有两种方法:传值赋值和传地址赋值赋值 1.传值赋值传值赋值默认情况下,函数的参数赋值采用传值赋值方式,默认情况下,函数的参数赋值采用传值赋值方式,即将实参值拷贝给形参值即
27、将实参值拷贝给形参值 2.传地址赋值传地址赋值函数的参数也可以使用传地址赋值,即将一个变函数的参数也可以使用传地址赋值,即将一个变量的量的“引用引用”传递给函数的参数。传递给函数的参数。传值赋值和传地址赋值传值赋值和传地址赋值$age的最终值为的最终值为18$age的最终值为的最终值为204.3 面向对象编程面向对象编程4.3.1 类和对象类和对象v任何一个具体事物都可以看作一个对象任何一个具体事物都可以看作一个对象 v对象包含对象包含属性属性和和方法方法,例如:,例如:张三张三属性:姓名、性别、身高、体重、年龄等;属性:姓名、性别、身高、体重、年龄等;方法:吃饭、走路、说话等;方法:吃饭、走
28、路、说话等;v类:同一类对象,对象可看成是类的一个实类:同一类对象,对象可看成是类的一个实例例1.类的定义类的定义v使用使用class关键字可定义一个类。语法为:关键字可定义一个类。语法为:class 类名类名定义成员变量定义成员变量定义成员函数定义成员函数 公有变量和私有变量公有变量和私有变量v类成员变量又可分为两种,一种是公有变量,用类成员变量又可分为两种,一种是公有变量,用关键字关键字public或或var定义;一种是私有变量,用定义;一种是私有变量,用关键字关键字private定义定义 class userInfopublic$userName;private$pwd;function
29、 output()echo$this-userName;伪变量,代表伪变量,代表类自身类自身说明说明v 如果类的成员函数中要访问类中的变量或其如果类的成员函数中要访问类中的变量或其他函数,必须使用他函数,必须使用“$this-变量名变量名”或或“$this-函数名函数名”访问。访问。v 如果要在类外面访问类中定义的变量和方法,如果要在类外面访问类中定义的变量和方法,必须先创建该类的对象,然后用必须先创建该类的对象,然后用“对象名对象名-变量变量名名”或或“对象名对象名-方法名方法名”来访问。来访问。v“-”是是PHP中的成员选择运算符。该运算符表中的成员选择运算符。该运算符表示右边的变量或函数
30、属于左边的类或对象。示右边的变量或函数属于左边的类或对象。v 注意注意“=”是初始化数组元素时分隔是初始化数组元素时分隔“键键”和和“值值”的符号。的符号。2.构造函数和析构函数构造函数和析构函数v构造函数构造函数:在创建对象时执行一些初始化的任务,在创建对象时执行一些初始化的任务,比如对属性赋初值等比如对属性赋初值等 vPHP规定构造函数的名称必须为规定构造函数的名称必须为“_construct”class userInfo function _construct()/定义构造函数定义构造函数$this-userName=Admin;$this-pwd=123;/为类中的变量赋初值为类中的变
31、量赋初值 析构函数析构函数v析构函数会在某个对象的所有引用被删除或者对析构函数会在某个对象的所有引用被删除或者对象被销毁时执行。也就是说,如果定义了析构函象被销毁时执行。也就是说,如果定义了析构函数,则对象在销毁前会调用析构函数。数,则对象在销毁前会调用析构函数。vPHP规定析构函数的名称为规定析构函数的名称为“_destruct()”,析构函数不能带有任何参数析构函数不能带有任何参数 3.定义对象定义对象v使用使用new关键字来创建对象关键字来创建对象 定义一个类定义一个类userInfo的对象的对象$user$user=new userInfo();v可使用对象来访问类中的成员变量或成员方
32、法可使用对象来访问类中的成员变量或成员方法$user=new userInfo();echo$user-userName;/访问类中的变量访问类中的变量$user-output();/访问类中的函数访问类中的函数 v定义类和对象的综合实例(定义类和对象的综合实例(3-12.php)3.操作符操作符“:”v可以在没有声明对象的情况下直接访问类中的变可以在没有声明对象的情况下直接访问类中的变量或方法量或方法,例如:例如:Person:run(8);/将其放在将其放在Person类的外部类的外部v语法格式为:语法格式为:关键字关键字:变量名变量名/方法名方法名/常量名常量名 v关键字可分为以下关键字
33、可分为以下3种情况种情况类名:用来调用本类中的变量、常量和方法。类名:用来调用本类中的变量、常量和方法。self:用来调用当前类中的静态成员和常量。:用来调用当前类中的静态成员和常量。parent:用来调用父类中的变量、常量和方法。:用来调用父类中的变量、常量和方法。4.instanceof关键字关键字v用来检测某个对象是否属于某个类,例如用来检测某个对象是否属于某个类,例如echo$p1 instanceof Person/返回返回true 3.6.2 类的继承和多态类的继承和多态v继承是指子类可以继承父类的属性和方法,并可继承是指子类可以继承父类的属性和方法,并可以重写或添加新的属性或方法
34、。以重写或添加新的属性或方法。v用用extends关键字关键字可实现类的继承可实现类的继承 class 子类名子类名 extends 父类名父类名 定义子类的成员变量定义子类的成员变量定义子类的成员函数定义子类的成员函数 v创建了一个类创建了一个类Students,并使它继承于类,并使它继承于类Person(3-13.php)2.多态多态v多态指多个函数使用同一个名字,但参数个数、多态指多个函数使用同一个名字,但参数个数、参数数据类型不同。调用时,虽然方法名相同,参数数据类型不同。调用时,虽然方法名相同,但会根据参数个数或者类型自动调用对应的函数但会根据参数个数或者类型自动调用对应的函数v多态
35、可通过继承或接口来实现。通过继承实现多多态可通过继承或接口来实现。通过继承实现多态的例子(态的例子(3-14.php)习题习题v1.下列哪个下列哪个PHP变量的名称是错误的?变量的名称是错误的?()vA$5-zhao B$s_Name C$_if D$Thisv2.语句语句“echo happy.1+2.345;”输出结果为:输出结果为:vA.2345B.happy3345C.happy12345D.运行出错运行出错v3.?:运算符相当于以下哪个运算符相当于以下哪个PHP 语句语句?vA.if.elseB.switchC.forD.breakv4.语句语句“for($k=0;$k=1;$k+)
36、;”和语句和语句“for($k=0;$k=1;$k+);”的执行次数分别是:的执行次数分别是:vA.无限次和无限次和0B.0和无限次和无限次C.都是无限次都是无限次D.都是都是0习题习题v7.对于对于for($i=100;$i=200;$i+=3),循环运行结束后,循环运行结束后,变量变量$i的值是多少?(的值是多少?()vA.201B.202C.199D.198v8.下列哪一项代表无穷循环下列哪一项代表无穷循环vA.for(;)B.for()vC.foreach(,)D.do(1)v9.如果函数有多个参数,则参数之间必须以下列哪个符如果函数有多个参数,则参数之间必须以下列哪个符号分开?号分开?vA.,B.:C.&D.;v10.如果要从函数返回值,必须使用下列哪个关键词?如果要从函数返回值,必须使用下列哪个关键词?A.continueB.breakC.exitD.return