首页 > 编程笔记 > PHP笔记 阅读:10

PHP自定义函数的用法(非常详细)

在 PHP 的循环语句(for、foreach、while 和 do while)中,可以使用 break 语句终止循环,或使用 continue 语句结束当前循环。

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 种情况:
  1. 如果是 PHP 的内置函数,如 date(),可以直接调用。
  2. 如果这个函数是 PHP 的某个库文件中的函数,就需要用 include() 或 require() 命令把此库文件加载,然后才能使用。
  3. 如果是自定义函数,与引用程序在同一个文件中,就可以直接引用。如果此函数不在当前文件内,就需要用 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

本程序首先声明一个变量和变量的引用,输出引用后取消引用,再次调用原变量。从运行结果可以看出,取消引用后对原变量没有任何影响。

相关文章