1、第6章 PHP中的函数什么是函数?函数(function)是一段完成指定任务的已命名代码,函数可以遵照给它的一组值或参数(parameter)完成任务,并且可能返回一个值。函数节省了编译时间,无论调用函数多少次,函数都只需为页面编译一次。函数允许你在一处修改任何错误,而不是在每个执行任务的地方修改,这样就提高了程序的可靠性,并且将完成指定任务的代码一一隔离,也提高了程序的可读性。l 本讲介绍函数调用和函数定义的语法,并且讨论如何管理函数中的变量以及想函数中传递值(包括按值传递和按引用传递),也介绍了可变函数和匿名函数。一、调用函数一、调用函数lPHP程序中的函数(内置或者是自定义)不管他们的源
2、代码是怎样的,所有的函数都用相同的方法求值:l$some_value=function_name(parameter,.);l函数要求的参数个数因函数的不同而不同。提供给函数的参数可以是任何有效的表达式,并且必须指定参数在函数中预期的顺序。函数的文档将告诉你函数期望什么样的参数,以及你可以预期返回什么样的值。下面是一些内置函数的例子:下面是一些内置函数的例子:/strlen()是返回字符串长度的内置函数$length=strlen(“php”)/此时$length为3/sin()和asin()是数学正弦和反正弦函数$result=sin(asin(1);/$result是arcsin(1)的正
3、弦/unlink()删除一个文件$result=unlink(“functions.txt”);/如果不成功则为falsel在第一个例子中给函数strlen()一个参数“PHP”,该函数返回给定字符串中的字符数。在这里,返回值3被赋给变量$length。这是最简单和最普通的使用函数的方法。l第二个例子传递asin(1)的结果给函数sin()。因为正弦和反正弦函数互为反函数,所以对任何值的反正弦求正弦值将总是返回和原来相同的值。在最后一个例子中给函数unlink()一个文件名,以尝试删除该文件,与许多函数一样,操作失败时该函数返回false。这个例子允许使用另一个内置函数die()和逻辑操作符的
4、短路属性。二、定义函数二、定义函数l 要定义一个函数,可以使用下面的语法结构:function&function_name(parameter,.)statement(s);?phpfunction foo()echo 天气好热;echo 希望明天下雨;echo 函数还没有被调用呢!;foo();/开始调用该函数echo 函数调用成功!;?实例:三、函数中变量的作用域三、函数中变量的作用域l 函数foo()中变量$a和外部变量$a是两个不同的变量,尽管foo()使用了相加赋值操作符,但是外部的$a的值在一页的生命周期中始终是3。而且函数中的$a的值为2。四、函数参数四、函数参数l通过函数定义进
5、行声明,函数可以有任意数目的参数。l有两种不同的为函数传递参数的方法。第一种也是最普遍的一种就是按值(value)传递,另一种是按引用(reference)传递。(一)按值传递参数(一)按值传递参数l 大多数情况是按值传递参数,参数可以是任何形式有效的表达式。计算表达式的值,并且将结果赋值给函数中适当的变量。(二)按引用传递参数(二)按引用传递参数l 按引用传递参数允许你忽略普通的作用域规则,而给出一个直接访问变量的功能。要按引用传递,参数必须是变量;在参数列表中的变量名前家上一个&符号来表示在该函数中的某个特定参数将按引用传递。function doubler(&$value)$value=
6、$value*2;$a=3;doubler($a);echo$a;三、函数的返回值三、函数的返回值l PHP函数可以使用关键字return只返回一个值:PHP函数可以使用关键字return只返回一个值:function return_one()return 42;默认情况下,值是复制出的函数。如果一个函数在它名字之前用&声明,则返回其返回值的一个引用(别名):$name=array(“fred”,”barney”,”wilma”,”betty”);function&find_one($n)global$names;return$names$n;$person=&find_one(1);/bar
7、ney$person=“barnetta”;/改变$name1四、可变函数以及匿名函数四、可变函数以及匿名函数l(一)可变函数(一)可变函数 因为有可变的变量,所以可以基于变量值调用函数。例如,考虑这种情况,一个变量被用于决定三个函数之中哪一个被调用:switch($which)case first:first();break;case second:second();break;case third:third();break;l(二)匿名函数(二)匿名函数l 一些PHP的函数用你提供的函数来完成他们的部分工作。例如,函数usort()使用你创建的函数,并将其作为参数传递给它来确定一个数组中
8、各项的排序顺序。l 如前所示,尽管可以为这样的目的定义一个函数,但是这些函数倾向于局部化和临时性,为了反映回调的短暂特性,我们创建和使用一个匿名函数(anonymous function)。l可以用create_function()创建一个匿名函数。这个函数带两个参数,第一个参数描述该匿名函数接受的参数,第二个参数是实际的代码。以下代码将返回为该函数随机产生的名字:l$func_name=create_function(args_string,code_string);l下面是一个展示使用usort()的例子:l通过usort()(使用匿名函数)按字符串的长度顺序对该数组进行排序。$lambd
9、a=create_function($a,$b,return(strlen($a)-strlen($b););$array=array(really long string here,boy,this,middling length,larger );usort($array,$lambda);print_r($array);PHP的自定义函数l函数定义的一般形式function fun_name($arg1,$arg2,$argN)statements;return$ret_val;函数中可以使用任何有效的PHP代码,甚至是其他的函数或类的定义返回值l函数通过return语句返回结果,返回值
10、可以是任何类型的,包括列表、对象。函数不能直接返回多个值,但可以通过返回列表的方式实现。参数l外部信息通过参数表传递给函数。Php支持值传递方式(默认方式),也支持地址传递方式。可以定义形式参数为变量参数,也可以直接传变量地址形式参数表函数体。是实现某种功能的语句的有序集合。函数的返回值常量、变量,均为值传递。即传递后不改变传递的信息本身。通过使用变量参数的方式进行地址传递,方法是在引用的变量前加上符号&。即传递后可以直接改变传递的信息本身。程序执行后的结果是:This is a string,and something extra.程序执行后的结果是:This is a string,Thi
11、s is a string,and something extra.PHP自定义函数(续)l默认值函数定义时,可以定义拥有默认值的参数,即给形式参数赋值函数定义时,如需定义拥有默认值的参数,须先定义无默认值的参数,后定义有默认值的参数执行的结果是提示出错执行的结果是:Making a bowl of acidophilus raspberry.PHP的对象类l类是一系列变量和函数的集合,是对象的模型l类的定义Class 类名称 变量表;函数声明列表;l$this的含义表示当前对象$this-表示存取当前对象的指定变量或函数示例1Class Cart var$items;function add
12、_item($artnr,$num)$this-items$atrnr+=$num;function remove_item($artnr,$num)if($this-item$artnr$num)$this-item$artnr-=$num;return true;else return false;示例2Class Data Var$item;$cname;$cage;function add_item($name,$age,$num)$this-item$num=$num;$this-cname$num=$name;$this-cage$num=$age;function remove_item($num)$n=count($this-item);for($k=$num;$kcname$k=$this-cname$k+;$this-cage$k=$this-cage$k+;总结l现在我们已经了解了足够多的信息了。可以继续学习php 提供给我们的WEB技术的一些特性了。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。