PHP自定义函数的用法(非常详细)
在 PHP 的循环语句(for、foreach、while 和 do while)中,可以使用 break 语句终止循环,或使用 continue 语句结束当前循环。
PHP 提供了大量的内置函数,方便程序员直接使用,常见的内置函数包括数学函数、字符串函数、时间和日期函数等。除此之外,PHP 还允许程序员自行设计函数的功能,也就是自定义函数。
PHP 自定义函数的语法结构如下:
【实例】自定义函数并调用。
举个简单的例子:
例如:
其中,echo totalneedtopay($rentdays,$roomprice);语句调用了此函数,totalneedtopay() 把运算值返回给了 echo 语句,才有了上面的显示。当然这里也可以不用 echo 来处理返回值,也可以对它进行其他处理,比如赋值给变量等。
对函数的引用实际上是对函数返回值的引用。
例如:
和参数传递不同,在定义函数和引用函数时,都必须使用“&”符号,表明返回的是一个引用。
PHP 提供了大量的内置函数,方便程序员直接使用,常见的内置函数包括数学函数、字符串函数、时间和日期函数等。除此之外,PHP 还允许程序员自行设计函数的功能,也就是自定义函数。
PHP 自定义函数的语法结构如下:
function name_of_function( param1,param2,… ){ statement }其中,name_of_function 是函数名,param1、param2 是参数,statement 是函数的具体内容。
【实例】自定义函数并调用。
<?php function sayhello($customer){ //自定义函数sayhello return $customer.", 欢迎您来到润慧酒店。"; } echo sayhello('张先生'); //调用函数sayhello ?>程序运行结果为:
张先生, 欢迎您来到润慧酒店。
值得一提的是,此函数的返回值是通过值返回的。也就是说 return 语句返回值时,创建了一个值的副本,并把它返回给使用此函数的命令或函数,在这里是 echo 命令。向函数传递参数值
由于函数是一段封闭的程序,因此很多时候程序员都需要向函数内传递一些数据来进行操作。function函数名称(参数1,参数2){ 算法描述,其中使用参数1和参数2; }例如:
<?php function totalneedtopay($days,$roomprice){ // 声明自定义函数 $totalcost = $days*$roomprice; // 计算住宿费总价 echo "需要支付的总价:$totalcost"."元。"; // 输出住宿费总价 } $rentdays = 3; //声明全局变量 $roomprice = 168; totalneedtopay($rentdays,$roomprice); //通过变量传递参数 totalneedtopay(5,198); //直接传递参数值 ?>运行结果为:
需要支付的总价:504元。需要支付的总价:990元。
实例中,function totalneedtopay($days,$roomprice){} 定义了函数和参数。无论是通过变量 $rentdays 和 $roomprice 向函数内传递参数值,还是像 totalneedtopay(5,198) 这样直接传递参数,值都是一样的。向函数传递参数引用
向函数传递参数引用其实就是向函数传递变量引用。参数引用一定是变量引用,静态数值是没有引用一说的。由于在变量引用中已经知道,变量引用其实就是对变量名的使用,是对特定的变量位置的使用。举个简单的例子:
<?php $fee = 300; $serviceprice = 50; function totalfee(&$fee,$serviceprice){// 声明自定义函数,参数前多了&,表示按引用传递 $fee = $fee+$serviceprice; // 改变形参的值,实参的值也会发生改变 echo "需要支付的总价:$fee"."元。"; } totalfee($fee,$serviceprice); //函数外部调用fun()函数前$fee =300 totalfee($fee,$serviceprice); //函数外部调用fun()函数后$ fee =350 ?>运行结果是:
需要支付的总价:350元。需要支付的总价:400元。
实例中,function totalfee(&$fee,$serviceprice){} 定义了函数、参数和参数引用。变量 $fee 是以参数引用的方式进入函数的。当函数的运行结果改变了变量 $fee 的引用时,在函数外的变量 $fee 的值也发生了改变,也就是函数改变了外部变量的值。从函数中返回值
在上述例子中,都是把函数运算完成的值直接打印出来。但是,很多情况下,程序并不需要直接把结果打印出来,而是仅仅给出结果,并且把结果传递给调用这个函数的程序,为其所用,这里需要用到 return 关键字。例如:
<?php function totalneedtopay($days,$roomprice){// 声明自定义函数 return $days*$roomprice; // 返回酒店消费总价格 } $rentdays = 3; $roomprice = 168; echo totalneedtopay($rentdays,$roomprice); ?>运行结果为:
504
在函数 function totalneedtopay($days,$roomprice) 算法中,直接使用 return 把运算的值返回给调用此函数的程序。其中,echo totalneedtopay($rentdays,$roomprice);语句调用了此函数,totalneedtopay() 把运算值返回给了 echo 语句,才有了上面的显示。当然这里也可以不用 echo 来处理返回值,也可以对它进行其他处理,比如赋值给变量等。
对函数的引用
无论是 PHP 中的内置函数,还是程序员在程序中自定义的函数,都可以简单地通过函数名调用。但是操作过程也有些不同,大致分为以下 3 种情况:- 如果是 PHP 的内置函数,如 date(),可以直接调用。
- 如果这个函数是 PHP 的某个库文件中的函数,就需要用 include() 或 require() 命令把此库文件加载,然后才能使用。
- 如果是自定义函数,与引用程序在同一个文件中,就可以直接引用。如果此函数不在当前文件内,就需要用 include() 或 require() 命令加载。
对函数的引用实际上是对函数返回值的引用。
例如:
<?php function &example($aa=1){ //定义一个函数,别忘了加“&”符号 return $aa; //返回参数$aa } $bb= &example("引用函数的实例"); //声明一个函数的引用$bb echo $bb. "<br/>"; ?>运行结果为:
引用函数的实例
本实例首先定义一个函数,然后变量 $bb 将引用函数,最后输出变量 $bb,它实际上是 $aa 的值。和参数传递不同,在定义函数和引用函数时,都必须使用“&”符号,表明返回的是一个引用。
对函数取消引用
对于不需要引用的函数,可以做取消操作。取消引用使用 unset() 函数来完成,目的是断开变量名和变量内容之间的绑定,此时并没有销毁变量内容。<?php $num = 166; //声明一个整型变量 $math = &$num; //声明一个对变量$num的引用$math echo "\$math is: ".$math."<br/>"; //输出引用$math unset($math); //取消引用$math echo "\$num is: ".$num; //输出原变量 ?>运行结果为:
$math is: 166
$num is: 166