版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章PHP中的函数第6章PHP中的函数1什么是函数?函数(function)是一段完成指定任务的已命名代码,函数可以遵照给它的一组值或参数(parameter)完成任务,并且可能返回一个值。函数节省了编译时间,无论调用函数多少次,函数都只需为页面编译一次。函数允许你在一处修改任何错误,而不是在每个执行任务的地方修改,这样就提高了程序的可靠性,并且将完成指定任务的代码一一隔离,也提高了程序的可读性。本讲介绍函数调用和函数定义的语法,并且讨论如何管理函数中的变量以及想函数中传递值(包括按值传递和按引用传递),也介绍了可变函数和匿名函数。什么是函数?2一、调用函数PHP程序中的函数(内置或者是自定义)不管他们的源代码是怎样的,所有的函数都用相同的方法求值:$some_value=function_name([parameter,...]);一、调用函数PHP程序中的函数(内置或者是自定义)不管他们的3函数要求的参数个数因函数的不同而不同。提供给函数的参数可以是任何有效的表达式,并且必须指定参数在函数中预期的顺序。函数的文档将告诉你函数期望什么样的参数,以及你可以预期返回什么样的值。函数要求的参数个数因函数的不同而不同。提供给函数的参数可以是4下面是一些内置函数的例子://strlen()是返回字符串长度的内置函数$length=strlen(“php”)//此时$length为3//sin()和asin()是数学正弦和反正弦函数$result=sin(asin(1));//$result是arcsin(1)的正弦//unlink()删除一个文件$result=unlink(“functions.txt”);//如果不成功则为false下面是一些内置函数的例子://strlen()是返回字符串长5在第一个例子中给函数strlen()一个参数“PHP”,该函数返回给定字符串中的字符数。在这里,返回值3被赋给变量$length。这是最简单和最普通的使用函数的方法。第二个例子传递asin(1)的结果给函数sin()。因为正弦和反正弦函数互为反函数,所以对任何值的反正弦求正弦值将总是返回和原来相同的值。在第一个例子中给函数strlen()一个参数“PHP”,该函6在最后一个例子中给函数unlink()一个文件名,以尝试删除该文件,与许多函数一样,操作失败时该函数返回false。这个例子允许使用另一个内置函数die()和逻辑操作符的短路属性。在最后一个例子中给函数unlink()一个文件名,以尝试删除7二、定义函数要定义一个函数,可以使用下面的语法结构:function[&]function_name([parameter[,...]]){statement(s);}<?phpfunctionfoo(){echo"天气好热<br>"; echo"希望明天下雨<br>";}echo"函数还没有被调用呢!<br>";foo();//开始调用该函数echo"函数调用成功!";?>实例:二、定义函数要定义一个函数,可以使用下面的语法结构:<?ph8三、函数中变量的作用域函数foo()中变量$a和外部变量$a是两个不同的变量,尽管foo()使用了相加赋值操作符,但是外部的$a的值在一页的生命周期中始终是3。而且函数中的$a的值为2。<?$a=3;functionfoo(){$a+=2;}foo();echo$a;?>三、函数中变量的作用域函数foo()中变量$a和外部变量$a9四、函数参数通过函数定义进行声明,函数可以有任意数目的参数。有两种不同的为函数传递参数的方法。第一种也是最普遍的一种就是按值(value)传递,另一种是按引用(reference)传递。四、函数参数通过函数定义进行声明,函数可以有任意数目的参数。10(一)按值传递参数大多数情况是按值传递参数,参数可以是任何形式有效的表达式。计算表达式的值,并且将结果赋值给函数中适当的变量。(一)按值传递参数大多数情况是按值传递参数,参数可以是任何形11(二)按引用传递参数按引用传递参数允许你忽略普通的作用域规则,而给出一个直接访问变量的功能。要按引用传递,参数必须是变量;在参数列表中的变量名前家上一个&符号来表示在该函数中的某个特定参数将按引用传递。functiondoubler(&$value){$value=$value*2;}$a=3;doubler($a);echo$a;(二)按引用传递参数按引用传递参数允许你忽略普通的作用域规则12三、函数的返回值PHP函数可以使用关键字return只返回一个值:PHP函数可以使用关键字return只返回一个值:functionreturn_one(){return42;}默认情况下,值是复制出的函数。如果一个函数在它名字之前用&声明,则返回其返回值的一个引用(别名):$name=array(“fred”,”barney”,”wilma”,”betty”);function&find_one($n){global$names;return$names[$n];}$person=&find_one(1);//barney$person=“barnetta”;//改变$name[1]三、函数的返回值PHP函数可以使用关键字return只返回一13四、可变函数以及匿名函数(一)可变函数因为有可变的变量,所以可以基于变量值调用函数。例如,考虑这种情况,一个变量被用于决定三个函数之中哪一个被调用:switch($which){case‘first’:first();break;case‘second’:second();break;case‘third’:third();break;}四、可变函数以及匿名函数(一)可变函数switch($wh14(二)匿名函数一些PHP的函数用你提供的函数来完成他们的部分工作。例如,函数usort()使用你创建的函数,并将其作为参数传递给它来确定一个数组中各项的排序顺序。如前所示,尽管可以为这样的目的定义一个函数,但是这些函数倾向于局部化和临时性,为了反映回调的短暂特性,我们创建和使用一个匿名函数(anonymousfunction)。(二)匿名函数15可以用create_function()创建一个匿名函数。这个函数带两个参数,第一个参数描述该匿名函数接受的参数,第二个参数是实际的代码。以下代码将返回为该函数随机产生的名字:$func_name=create_function(args_string,code_string);下面是一个展示使用usort()的例子:可以用create_function()创建一个匿名函数。这16通过usort()(使用匿名函数)按字符串的长度顺序对该数组进行排序。$lambda=create_function(‘$a,$b’,’return(strlen($a)-strlen($b));’);$array=array(‘reallylongstringhere,boy’,’this’,’middlinglength’,’larger’);usort($array,$lambda);print_r($array);通过usort()(使用匿名函数)按字符串的长度顺序对该数组17PHP的自定义函数函数定义的一般形式functionfun_name($arg1,$arg2,…$argN){statements;return$ret_val;}函数中可以使用任何有效的PHP代码,甚至是其他的函数或类的定义返回值函数通过return语句返回结果,返回值可以是任何类型的,包括列表、对象。函数不能直接返回多个值,但可以通过返回列表的方式实现。参数外部信息通过参数表传递给函数。Php支持值传递方式(默认方式),也支持地址传递方式。可以定义形式参数为变量参数,也可以直接传变量地址形式参数表函数体。是实现某种功能的语句的有序集合。函数的返回值常量、变量,均为值传递。即传递后不改变传递的信息本身。通过使用变量参数的方式进行地址传递,方法是在引用的变量前加上符号&。即传递后可以直接改变传递的信息本身。<?Phpfunctionfoo(&$bar){$bar=“andsomethingextra.”;}$str=“Thisisastring,”;foo($str);echo$str;?>程序执行后的结果是:Thisisastring,andsomethingextra.<?Phpfunctionfoo($bar){$bar=“andsomethingextra.”;}$str=“Thisisastring,”;foo($str);echo$str;foo(&$str);echo$str;?>程序执行后的结果是:Thisisastring,Thisisastring,andsomethingextra.PHP的自定义函数函数定义的一般形式形式参数表函数体。是实现18PHP自定义函数(续)默认值函数定义时,可以定义拥有默认值的参数,即给形式参数赋值函数定义时,如需定义拥有默认值的参数,须先定义无默认值的参数,后定义有默认值的参数<?phpfunctionmakecoffee($type="cappucino"){echo"Makingacupof$type.\n"}echomakecoffee();echomakecoffee("espresso");?><?phpfunctionmakeyogurt($type="acidophilus",$flavour){return"Makingabowlof$type$flavour.\n";}echomakeyogurt("raspberry");?>执行的结果是提示出错<?phpfunctionmakeyogurt($flavour,$type="acidophilus"){return"Makingabowlof$type$flavour.\n";}echomakeyogurt("raspberry");?>执行的结果是:Makingabowlofacidophilusraspberry.PHP自定义函数(续)默认值<?php<?php<?ph19PHP的对象类类是一系列变量和函数的集合,是对象的模型类的定义Class类名称{变量表;函数声明列表;}$this的含义表示当前对象$this->…表示存取当前对象的指定变量或函数示例1ClassCart{var$items;functionadd_item($artnr,$num){$this->items[$atrnr]+=$num;}functionremove_item($artnr,$num){if($this->item[$artnr]>$num){$this->item[$artnr]-=$num;returntrue;}else{returnfalse;}}}示例2ClassData{Var$item;$cname;$cage;functionadd_item($name,$age,$num){$this->item[$num]=$num;$this->cname[$num]=$name;$this->cage[$num]=$age;}functionremove_item($num){$n=count($this->item[]);for($k=$num;$k<$n-2;$k++){$this->cname[$k]=$this->cname[$k++];$this->cage[$k]=$this->cage[$k++];}}}PHP的对象类类是一系列变量和函数的集合,是对象的模型示例120总结现在我们已经了解了足够多的信息了。可以继续学习php提供给我们的WEB技术的一些特性了。总结现在我们已经了解了足够多的信息了。21第6章PHP中的函数第6章PHP中的函数22什么是函数?函数(function)是一段完成指定任务的已命名代码,函数可以遵照给它的一组值或参数(parameter)完成任务,并且可能返回一个值。函数节省了编译时间,无论调用函数多少次,函数都只需为页面编译一次。函数允许你在一处修改任何错误,而不是在每个执行任务的地方修改,这样就提高了程序的可靠性,并且将完成指定任务的代码一一隔离,也提高了程序的可读性。本讲介绍函数调用和函数定义的语法,并且讨论如何管理函数中的变量以及想函数中传递值(包括按值传递和按引用传递),也介绍了可变函数和匿名函数。什么是函数?23一、调用函数PHP程序中的函数(内置或者是自定义)不管他们的源代码是怎样的,所有的函数都用相同的方法求值:$some_value=function_name([parameter,...]);一、调用函数PHP程序中的函数(内置或者是自定义)不管他们的24函数要求的参数个数因函数的不同而不同。提供给函数的参数可以是任何有效的表达式,并且必须指定参数在函数中预期的顺序。函数的文档将告诉你函数期望什么样的参数,以及你可以预期返回什么样的值。函数要求的参数个数因函数的不同而不同。提供给函数的参数可以是25下面是一些内置函数的例子://strlen()是返回字符串长度的内置函数$length=strlen(“php”)//此时$length为3//sin()和asin()是数学正弦和反正弦函数$result=sin(asin(1));//$result是arcsin(1)的正弦//unlink()删除一个文件$result=unlink(“functions.txt”);//如果不成功则为false下面是一些内置函数的例子://strlen()是返回字符串长26在第一个例子中给函数strlen()一个参数“PHP”,该函数返回给定字符串中的字符数。在这里,返回值3被赋给变量$length。这是最简单和最普通的使用函数的方法。第二个例子传递asin(1)的结果给函数sin()。因为正弦和反正弦函数互为反函数,所以对任何值的反正弦求正弦值将总是返回和原来相同的值。在第一个例子中给函数strlen()一个参数“PHP”,该函27在最后一个例子中给函数unlink()一个文件名,以尝试删除该文件,与许多函数一样,操作失败时该函数返回false。这个例子允许使用另一个内置函数die()和逻辑操作符的短路属性。在最后一个例子中给函数unlink()一个文件名,以尝试删除28二、定义函数要定义一个函数,可以使用下面的语法结构:function[&]function_name([parameter[,...]]){statement(s);}<?phpfunctionfoo(){echo"天气好热<br>"; echo"希望明天下雨<br>";}echo"函数还没有被调用呢!<br>";foo();//开始调用该函数echo"函数调用成功!";?>实例:二、定义函数要定义一个函数,可以使用下面的语法结构:<?ph29三、函数中变量的作用域函数foo()中变量$a和外部变量$a是两个不同的变量,尽管foo()使用了相加赋值操作符,但是外部的$a的值在一页的生命周期中始终是3。而且函数中的$a的值为2。<?$a=3;functionfoo(){$a+=2;}foo();echo$a;?>三、函数中变量的作用域函数foo()中变量$a和外部变量$a30四、函数参数通过函数定义进行声明,函数可以有任意数目的参数。有两种不同的为函数传递参数的方法。第一种也是最普遍的一种就是按值(value)传递,另一种是按引用(reference)传递。四、函数参数通过函数定义进行声明,函数可以有任意数目的参数。31(一)按值传递参数大多数情况是按值传递参数,参数可以是任何形式有效的表达式。计算表达式的值,并且将结果赋值给函数中适当的变量。(一)按值传递参数大多数情况是按值传递参数,参数可以是任何形32(二)按引用传递参数按引用传递参数允许你忽略普通的作用域规则,而给出一个直接访问变量的功能。要按引用传递,参数必须是变量;在参数列表中的变量名前家上一个&符号来表示在该函数中的某个特定参数将按引用传递。functiondoubler(&$value){$value=$value*2;}$a=3;doubler($a);echo$a;(二)按引用传递参数按引用传递参数允许你忽略普通的作用域规则33三、函数的返回值PHP函数可以使用关键字return只返回一个值:PHP函数可以使用关键字return只返回一个值:functionreturn_one(){return42;}默认情况下,值是复制出的函数。如果一个函数在它名字之前用&声明,则返回其返回值的一个引用(别名):$name=array(“fred”,”barney”,”wilma”,”betty”);function&find_one($n){global$names;return$names[$n];}$person=&find_one(1);//barney$person=“barnetta”;//改变$name[1]三、函数的返回值PHP函数可以使用关键字return只返回一34四、可变函数以及匿名函数(一)可变函数因为有可变的变量,所以可以基于变量值调用函数。例如,考虑这种情况,一个变量被用于决定三个函数之中哪一个被调用:switch($which){case‘first’:first();break;case‘second’:second();break;case‘third’:third();break;}四、可变函数以及匿名函数(一)可变函数switch($wh35(二)匿名函数一些PHP的函数用你提供的函数来完成他们的部分工作。例如,函数usort()使用你创建的函数,并将其作为参数传递给它来确定一个数组中各项的排序顺序。如前所示,尽管可以为这样的目的定义一个函数,但是这些函数倾向于局部化和临时性,为了反映回调的短暂特性,我们创建和使用一个匿名函数(anonymousfunction)。(二)匿名函数36可以用create_function()创建一个匿名函数。这个函数带两个参数,第一个参数描述该匿名函数接受的参数,第二个参数是实际的代码。以下代码将返回为该函数随机产生的名字:$func_name=create_function(args_string,code_string);下面是一个展示使用usort()的例子:可以用create_function()创建一个匿名函数。这37通过usort()(使用匿名函数)按字符串的长度顺序对该数组进行排序。$lambda=create_function(‘$a,$b’,’return(strlen($a)-strlen($b));’);$array=array(‘reallylongstringhere,boy’,’this’,’middlinglength’,’larger’);usort($array,$lambda);print_r($array);通过usort()(使用匿名函数)按字符串的长度顺序对该数组38PHP的自定义函数函数定义的一般形式functionfun_name($arg1,$arg2,…$argN){statements;return$ret_val;}函数中可以使用任何有效的PHP代码,甚至是其他的函数或类的定义返回值函数通过return语句返回结果,返回值可以是任何类型的,包括列表、对象。函数不能直接返回多个值,但可以通过返回列表的方式实现。参数外部信息通过参数表传递给函数。Php支持值传递方式(默认方式),也支持地址传递方式。可以定义形式参数为变量参数,也可以直接传变量地址形式参数表函数体。是实现某种功能的语句的有序集合。函数的返回值常量、变量,均为值传递。即传递后不改变传递的信息本身。通过使用变量参数的方式进行地址传递,方法是在引用的变量前加上符号&。即传递后可以直接改变传递的信息本身。<?Phpfunctionfoo(&$bar){$bar=“andsomethingextra.”;}$str=“Thisisastring,”;foo($str);echo$str;?>程序执行后的结果是:Thisisastring,andsomethingextra.<?Phpfunctionfoo($bar){$bar=“andsomethingextra.”;}$str=“Thisisastring,”;foo($str);echo$str;foo(&$str);echo$str;?>程序执行后的结果是:Thisisastring,Thisisastring,andsomethingextra.PHP的自定义函数函数定义的一般形式形式参数表函数体。是实现39PHP自定义函数(续)默认值函数定义时,可以定义拥有默认值的参数,即给形式参数赋值函数定义时,如需定义拥有默认值的参数,须先定义无默认值的参数,后定义有默认值的参数<?phpfunctionmakecoffee($type="cappucino"){echo"Makingacupof$type.\n"}echomakecoffee();echomakecoffee("espresso");?><?phpfunctionmakeyogurt($type="acidophilus",$flavour){return"Makingabowlof$type$flavour.\n"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护校安园行动工作方案
- 废钢铁供应商招标启示
- 国庆节老年人的活动方案
- 移动式起重机项目运营指导方案
- 工业大数据驱动的智能制造行业营销策略方案
- 房屋赠与合同格式简化
- 企业价格保密协议书
- 购买分析报告合作协议样本
- 知名服装品牌加盟合同
- 商铺租房协议书
- 国学导论·巴蜀文化课件
- (完整word版)商业计划书模板
- 自动化学科概论-学生版-东南大学-自动化学院课件
- 浙江省宁波市镇海蛟川书院2022-2023七年级上学期数学期中试卷+答案
- 《人民警察内务条令》试题及答案
- 园林植物花卉育种学课件第4章-选择育种
- DB31T 1249-2020 医疗废物卫生管理规范
- 多发伤复合伤病人急诊抢救流程图
- 硫酸镁使用课件
- 18周年庆典晚宴主持稿
- 念奴娇过洞庭 (共35张PPT)
评论
0/150
提交评论