版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2
3掌握定义和调用函数的方法掌握在函数间传递参数的3种方法掌握使用return语句从函数中返回值的方法掌握对函数的引用方法掌握变量函数和递归函数的应用了解常见PHP内置函数的应用激发乐于奉献、心系国家建设、勇担时代使命的爱国情怀4
5自定义函数4.1在程序开发过程中,经常需要重复某种操作或处理,如数据查询、字符操作等。这些重复和独立的操作可以使用函数来实现。PHP函数主要分为自定义函数和内置函数。64.1.1定义和调用函数4.1.2在函数间传递参数4.1.3从函数中返回值4.1.4对函数的引用4.1.5变量函数4.1.6递归函数7自定义函数4.1定义和调用函数4.1.181定义函数函数一般由函数名、参数、函数体和返回值4部分组成。函数体是实现函数功能的代码段,它可以是任何有效的PHP代码。函数的基本语法格式如下:functionfun_name($str1,$str2,…$strn){fun_body;//函数体,实现函数功能的代码
return$value;//返回值}定义和调用函数4.1.19其中各项的意义如下:function:自定义函数时必须要用到的关键字。fun_name:自定义函数的名称,必须以字母或下划线开头,后面可以跟字母、数字或下划线。函数名具有唯一性,并且在PHP中不区分大小写。$str1,$str2,…$strn:函数的参数。函数可以没有参数,也可以有一个或多个参数。其作用范围为函数体内,相当于局部变量。return$value:函数的返回值语句,并不是所有函数都需要该语句。函数执行到该语句即结束,所以不要在其后写任何代码。定义和调用函数4.1.1102调用函数函数只有在被调用时才会执行,页面加载时不会立即执行。定义函数后还必须要调用该函数。下面通过一个实例来了解一下函数的定义和调用。11(实例位置:素材与实例\example\ph04\01)【例4-1】函数的定义和调用。本例定义一个函数square(),计算传入的参数的平方,然后连同表达式和结果一起输出。实例代码如下:<?phpfunctionsquare($num){return"$num*$num=".$num*$num;
//返回计算后的结果
}echosquare(6);//调用函数?>定义和调用函数4.1.1函数中的每个参数都是一个表达式,定义时称为形参,调用时输入的实际值称为实参。实参和形参应该个数相等,类型一致。形参和实参按顺序对应传递数据。知识库12运行结果如图4-1所示。定义和调用函数4.1.1图4-1函数的定义和调用定义和调用函数4.1.113在调用函数时需要注意以下几点。通过函数名进行调用,可以在函数声明之前,也可以在声明之后进行调用。当函数有参数列表时,可以通过传递参数改变函数内部代码的执行行为。当函数有返回值时,在函数执行完毕后,可以将函数名当做保存返回值的变量来使用。在函数间传递参数4.1.2141按值传递参数函数如果带有参数,则在调用函数时需要向其传递数据。在PHP中,函数间参数传递的方式有按值传递、按引用传递和默认参数3种。按值传递是函数默认的参数传递方式,将实参赋值给对应的形参。该方式的特点是,在函数内部对形参的任何操作对实参值都不会产生影响。15(实例位置:素材与实例\example\ph04\02)【例4-2】函数按值传递参数。实例代码如下:<?phpfunctiontest($var){//声明自定义函数
$var++;//改变局部变量形参的值
echo"Intest:".$var."<br>";}$var=89;//声明全局变量
echo$var."<br>";//函数外部调用test()函数前$var=89test($var);//函数内部$var=90echo$var."<br>";//函数外部调用test()函数后$var=89?>在函数间传递参数4.1.216运行结果如图4-2所示。在函数间传递参数4.1.2图4-2按值传递参数在函数间传递参数4.1.2172按引用传递参数按引用传递就是将实参在内存中分配的地址传递给形参。这样在函数内部所有对形参的操作都会影响到实参的值。就是说,在函数内部修改了形参的值,函数调用结束后实参值也会发生改变。引用传递方式需要在函数定义时在形参前加上“&”符号。18(实例位置:素材与实例\example\ph04\03)【例4-3】函数按引用传递参数。实例代码如下:<?phpfunctiontest(&$var){//声明自定义函数,参数前多了&, //表示按引用传递$var++;//改变形参的值,实参值也会发生改变echo"Intest:".$var."<br>";}$var=1;echo$var."<br>";//函数外部调用test()函数前,$var=1test($var);//函数内部$var=2echo$var."<br>";//函数外部调用test()函数后,$var=2?>在函数间传递参数4.1.219运行结果如图4-3所示。在函数间传递参数4.1.2图4-3按引用传递参数在函数间传递参数4.1.2203默认参数(可选参数)在PHP中定义函数时,还可以为一个或多个形参指定默认值。默认值必须是常量或者NULL。在使用默认参数时,必须将其放在任何非默认参数右侧。21(实例位置:素材与实例\example\ph04\04)【例4-4】函数带有默认参数。实例代码如下:<?phpfunctionvalues($price,$tax=10){ //声明一个自定义函数,
//其中一个参数初始值为10$price+=$price*$tax; //声明一个变量$price,
//等于两个参数的运算结果echo"TotalPrice:".$price."<br>"; //输出总价格}values(100,0.25);
//为可选参数赋值0.25values(100);//不为可选参数赋值,
//此时其将按照初始值计算?>在函数间传递参数4.1.222运行结果如图4-4所示。在函数间传递参数4.1.2图4-4默认参数从函数中返回值4.1.323通常,函数在执行完毕后,可返回一个值给其调用者,该值称为函数的返回值,通过return语句来实现。return语句的作用是将函数值传递给函数调用者,并终止函数的执行。return语句只能返回一个值,如果需要返回多个值,就要在函数中定义一个数组,将返回值存储在数组中;如果不需要返回任何值,而是结束函数的执行,可以只使用return。24(实例位置:素材与实例\example\ph04\05)【例4-5】函数返回值的应用。实例代码如下:<?phpfunctiondivision($num1,$num2) //声明自定义函数{ if($num2!=0){ //如果变量$num2不等于0 return$num1/$num2;//返回两个变量相除得到的值
}else{ return'0不能为除数'; //否则返回字符串
}}echodivision(88,4)."<br>"; //调用函数echodivision(10,0)."<br>"; //调用函数?>从函数中返回值4.1.325运行结果如图4-5所示。从函数中返回值4.1.3图4-5函数返回值对函数的引用4.1.4264.1.2节中介绍过,参数传递中按引用传递可以修改实参的值。引用不仅可用于普通变量、普通参数,还可用于函数本身。对函数的引用,就是对函数返回结果的引用。通过在函数名前加“&”符号,可以实现对函数的引用。27(实例位置:素材与实例\example\ph04\06)【例4-6】对函数的引用。实例代码如下:<?phpfunction&fun($temp_str=0){return$temp_str;}$str=&fun("函数引用");echo$str."br";?>对函数的引用4.1.4和参数引用传递不同,对函数的引用,必须在定义和调用函数时都使用“&”符号。提示28运行结果如图4-6所示。对函数的引用4.1.4图4-6对函数的引用变量函数4.1.529PHP支持变量函数,这意味着如果一个变量名后有圆括号,PHP将寻找与变量值同名的函数,并尝试执行它。如果找不到对应的函数,系统将会报错。该技术可用于实现回调函数和函数表等。30(实例位置:素材与实例\example\ph04\07)【例4-7】变量函数的应用。实例代码如下:<?phpfunctionfoo(){ //声明foo()函数
echo"调用foo()函数<br>\n";}functionbar($arg=''){//声明bar()函数
echo"调用bar()函数;argumentwas'$arg'.<br/>\n";}functionechoit($string){ //声明echoit()函数
echo$string;}$func='foo'; //将foo()函数名赋值给变量$func();//调用该变量值同名函数并执行,调用foo()函数$func='bar'; //重新赋值$func('test'); //调用bar()函数,并给变量赋值$func='echoit'; //重新赋值$func('test'); //调用echoit()函数?>变量函数4.1.531运行结果如图4-7所示。变量函数4.1.5图4-7变量函数的应用递归函数4.1.632递归函数即为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身;若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行。33(实例位置:素材与实例\example\ph04\08)【例4-8】递归函数的应用。实例代码如下:<?phpfunctionread($n){ //声明自定义函数
echo"$n "; //函数体内的可执行语句,
//显示实参值
if($n>0) //根据条件判断是执行还是终止递归动作
read($n-1); //开始递归,
//并给出附加条件改变变量值,
//防止死循环
}read(6); //6543210?>递归函数4.1.634运行结果如图4-8所示。递归函数4.1.6图4-8递归函数的应用
354.2.1日期时间函数36PHP内置函数4.24.2.2数学函数4.2.3变量相关的函数4.2.4include()和require()函数4.2.5include_once()和require_once()函数371格式化当前日期和时间——date()对日期和时间的处理是PHP编程中不可缺少的应用。比如,获取服务器的日期和时间、时区、检查日期的有效性等。日期时间函数4.2.1date()函数用于格式化一个本地日期/时间。其语法格式如下:stringdate(string$format[,int$timestamp])返回按照指定格式显示的时间字符串。参数format为显示格式,timestamp为时间戳,是可选参数。如果没有给出时间戳,默认使用本地当前时间time()。其中format的参数很多,如表4-1所示(详见书相应位置)。38(实例位置:素材与实例\example\ph04\09)【例4-9】使用date()函数获取当前日期时间。实例代码如下:<?phpecho"欢迎光临!现在是:".date("Y年m月d日H:i:s")."<br>";//输出当前年、月、日、时间?>日期时间函数4.2.139运行结果如图4-9所示。日期时间函数4.2.1图4-9获取当前日期时间40在PHP语言中,默认设置的是标准的格林威治时间(采用零时区),该时间比系统时间少8个小时。也就是说例4-9中网页的实际运行时间是早上“09:03:41”。要获取本地时间,必须更改PHP语言中的时区设置,更改时区设置的函数如下:日期时间函数4.2.1booldate_default_timezone_set(string$timezone);参数timezone为PHP可识别的时区名称,如果timezone参数无效则返回false,否则返回true。PHP手册中提供了各种时区名称列表,其中设置北京时间可使用的时区包括:PRC(中华人民共和国)、Asia/Shanghai(上海)、Asia/Chongqing(重庆)或者Asia/Urumqi(乌鲁木齐)。41修改例4-9中的代码,为其设置时区,此时的代码如下:日期时间函数4.2.1<?phpdate_default_timezone_set("Asia/Shanghai");echo"欢迎光临!现在是:".date("Y年m月d日H:i:s")."<br>"; //输出当前年、月、日、时间?>42再次运行,结果如图4-10所示。日期时间函数4.2.1图4-10设置时区后的效果432获取当前的日期时间信息——getdate()日期时间函数4.2.1getdate()函数用于取得当前的日期时间信息。其语法格式如下:arraygetdate([int$timestamp]);该函数返回与时间戳相关的数组形式的日期、时间信息。调用时若没有给出参数时间戳,则默认返回当前时间。44日期时间函数4.2.1该函数返回的数组键名和值如表4-2所示。表4-2getdate()函数返回的数组键名列表键
名说
明返回值seconds用数字表示的秒0~59minutes用数字表示的分0~59hours用数字表示的小时0~23mday用数字表示月份中的第几天1~31wday用数字表示星期几0(星期天)~6(星期六)mon用数字表示的月份1~12year用4位数字表示的完整年份如2016yday用数字表示的一年中的第几天0~365weekday星期几的完整文本表示Sunday到Saturdaymonth月份的完整文本表示January到December45(实例位置:素材与实例\example\ph04\10)【例4-10】使用getdate()函数获取当前日期时间信息。实例代码如下:<?php$now=getdate();var_dump($now);?>日期时间函数4.2.1var_dump()函数用于显示一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。知识库46运行结果如图4-11所示。日期时间函数4.2.1图4-11使用getdate()函数473获取当前时间戳——time()日期时间函数4.2.1time()函数用于返回从Unix纪元(格林威治时间1970年1月1日00:00:00)到当前时间的秒数。其语法格式如下:inttime(void)484获取一个日期的Unix时间戳——mktime()日期时间函数4.2.1PHP使用mktime()函数将一个时间转换成Unix的时间戳值,然后使用它来查找该日期的天。时间戳是一个长整数,包含从Unix纪元(January1197000:00:00GMT)到给定时间的秒数。其语法格式如下:intmktime([inthour[,intminute[,intsecond[,intmonth[,intday[,intyear[,intis_dst]]]]]]]);49日期时间函数4.2.1括号中的参数可以自右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。参数说明如表4-3所示。表4-3mktime()函数的参数说明参
数说
明hour小时数minute分钟数second秒数(1分钟之内)month月份数day天数year可以是2位或4位数字,0~69对应于2000~2069,70~100对应于1970~2000is_dst夏令时可以被设置为1,如果不是则设置为0;当不确定为夏令时则设置为-1(默认)50(实例位置:素材与实例\example\ph04\11)【例4-11】使用time()和mktime()获取日期的时间戳。实例代码如下:<?phpecho"当前时间戳:".time()."<br>";$nextday=time()+(24*60*60);echo"明天的日期时间:".date("Y-m-dH:i:s",$nextday)."<br>";echo"2016-11-05的时间戳:".mktime(0,0,0,11,05,2016);?>日期时间函数4.2.151运行结果如图4-12所示。日期时间函数4.2.1图4-12获取日期时间戳521返回最大值——max()数学函数4.2.2数学函数有很多,主要用于处理程序中int和float类型的数据。max(mixed$value1,mixed$value2[,mixed$...])max()函数用于返回参数中数值最大的值。其语法格式如下:如果仅有一个参数且为数组,max()返回该数组中最大的值。如果第一个参数是整数、字符串或浮点数,则至少需要两个参数,max()会返回这些值中最大的一个。53(实例位置:素材与实例\example\ph04\12)【例4-12】使用max()函数返回几个指定数中最大的一个。实例代码如下:<?phpecho(max(5,7,18))."<br>";echo(max(-3,5))."<br>";echo(max(-3,-5))."<br>";echo(max(7.25,7.30))."<br>";?>数学函数4.2.254运行结果如图4-13所示。数学函数4.2.2图4-13返回最大值PHP会将非数值的字符串当成0,但如果这正是最大的数值,则仍然会返回一个字符串。如果多个参数都求值为0且是最大值,max()会返回其中数值的0,如果参数中没有数值的0,则返回按字母表顺序最大的字符串。提示552返回最小值——min()数学函数4.2.2intrand(int$min,int$max)min()函数用于返回参数中数值最小的值。其语法格式和用法与max()函数相同,此处不再赘述。如果没有提供可选参数min和max,rand()将会返回0到rand_max之间的伪随机整数。例如,想要得到5到15(包括5和15)之间的随机数,用rand(5,15)。3随机函数——rand()rand()函数可返回随机整数。其语法格式如下:56(实例位置:素材与实例\example\ph04\13)【例4-13】使用rand()函数获取随机数。实例代码如下:<?phpecho(rand())."<br>";echo(rand())."<br>";echo(rand(9,99))."<br>";?>数学函数4.2.257运行结果如图4-14所示。数学函数4.2.2每次刷新页面,输出的结果都会不同。提示图4-14获取随机数581检测变量是否为空——empty()变量相关的函数4.2.3boolempty(mixed$var)使用变量相关的函数,可以方便地实现变量的检测和类型转换等。若变量var是非空字符串或非零,则返回false值,否则返回true。一般来说,""、0、"0"、NULL、false、array()、var$var;,以及没有任何属性的对象都将被认为是空的。empty()函数用于测试变量是否已经配置。其语法格式如下:592释放变量——unset()变量相关的函数4.2.3voidunset(mixed$var[,mixed$var[,...]])对于全局变量,若在函数内部销毁,则只在函数内部起作用;函数调用结束后,全局变量依然存在且有效。unset()函数用于销毁指定的var变量,可同时销毁多个变量。其语法格式如下:603检测变量是否存在——isset()变量相关的函数4.2.3boolisset(mixed$var[,mixed$var[,...]])如果变量存在则返回true,否则返回false。当使用该函数测试一个被设置为NULL的变量时,将返回false。isset()函数用于检测变量var是否已经设置。其语法格式如下:61(实例位置:素材与实例\example\ph04\14)【例4-14】变量相关函数的应用。实例代码如下:<?php$x="hello";$y=000;var_dump(empty($x));echo"<br>";var_dump(empty($y));echo"<br>";echo"<hr>";var_dump(isset($x));echo"<br>";var_dump(isset($y));echo"<br>";echo"<hr>";unset($x);var_dump(isset($x));echo"<br>";echo"<hr>";?>变量相关的函数4.2.362运行结果如图4-15所示。变量相关的函数4.2.3图4-15变量相关函数的应用631include()函数include()和require()函数4.2.4voidinclude(string$filename);include()函数在PHP网页设计中非常重要。它可以很好地实现代码的可重用性,同时有效简化文件代码。include()函数包含并运行指定文件,假设有文件a.php,要在a.php中包含b.php文件,此时只需要在a.php文件中使用“include(‘b.php’);”语句即可;当服务器执行a.php到包含文件这行时,就会自动读取b.php文件并执行其中的代码。当所包含的外部文件发生错误时,系统只给出一个警告,而整个php文件则继续向下执行。include()函数的语法格式如下:参数filename是指定的完整路径的文件名。64include()和require()函数4.2.4<?php$pagetitle="文章列表";include('header.php');?><?phpinclude('footer.php');?>网页设计中,常将网页头和页脚单独制作成独立的文件,然后使用include()函数将其包含在网页中,这样不仅可以减少代码重用,也便于今后的维护。如下代码所示(鉴于篇幅原因,略去了网页中间的代码):另外,在PHP编程时,也经常将一些常用的访问数据库函数写到一个文件中,然后用include()函数将该文件包含进网页中。这两种结构除了在处理失败时不同外,其他完全一样。include()产生一个警告,而require()则导致一个致命错误。如果想在遇到丢失文件时停止处理页面就用require()。include()会继续运行。提示652require()函数include()和require()函数4.2.4voidrequire(string$filename);require()函数与include()函数类似,都是实现对外部文件的调用。当使用require()函数载入文件时,它会作为PHP文件的一部分被执行,语法如下:参数filename是指定的完整路径的文件名。661include_once()函数include_once()和require_once()函数4.2.5voidinclude_once(string$filename);应用include_once()函数多次调用相同的文件时,程序只会调用一次。例如,要导入的文件中存在一些自定义函数,如果在同一个程序中重复导入该文件,在第2次导入时便会发生错误,因为PHP不允许相同名称的函数被重复声明两次。该函数的语法格式如下:参数filename是指定的完整路径的文件名。672require_once()函数voidrequire_once(string$filename);require_once()是require()的延伸,其功能与require()基本类似,不同的是,require_once()函数会先检查要导入的文件是不是已经在该程序中的其他地方被调用过,如果被调用过,就不会再次重复调用该文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华师大版初中科学2.1压强
- 小学二年级100以内进退位加减法800道题
- 信息论与编码课件(全部课程内容)
- 医院节能环保与资源利用管理制度
- 人教部编版四年级语文上册第6课《夜间飞行的秘密》精美课件
- 【寒假阅读提升】四年级下册语文试题-文言文阅读(三)-人教部编版(含答案解析)
- 2024年客运从业资格证继续教育手机
- 2024年汕尾从业资格证客运考试题库
- 2024年雅安道路客运输从业资格证考试
- 2024年银川客运资格用什么练题好
- Module 5 外研版英语九(上)模块主题写作详解与训练
- 高低压配电室运行巡查表
- 竹荪种植项目可行性研究报告写作范文
- starter安装教程
- kummell 病ppt课件
- 小班综合活动《出生的秘密》
- 制程品质保证权责及工作重点
- 结构工程工作危害分析(JHA)
- 运用思维导图优化初中数学课堂的实践与探究
- 中考物理专题21 欧姆定律的动态电路计算(原卷版)
- 2022年2022年北京市各区中考英语一模试卷分类汇编完形填空专题
评论
0/150
提交评论