文章教程

5.1函数

9/17/2020 9:40:31 PM 人评论 次浏览

5.1 函数

函数的英文为function,这个词也是功能的意思。顾名思义,使用函数就是要在编程过程中实现一定的功能,即通过代码块来实现特定的功能。例如,通过一定的功能记录下酒店客人的个人信息,每到他生日的时候自动给他发送祝贺E-mail,并且这个发信“功能”可以重用,改在某个客户的结婚纪念日时给他发送祝福email。

5.1.1 PHP函数

其实在前面的实例中早已用过函数。define()函数就是定义一个常量。

其实,更多的情况下,程序员面对的是自定义函数。其结构如下:

  function name_of_function( param1,param2,… ){
         statement
  }

其中name_of_function是函数名,param1、param2是参数,statement是函数的具体内容。

5.1.2 定义和调用函数

下面以定义和调用函数为例进行讲解。本实例主要实现酒店欢迎页面。

【例5.1】(实例文件:ch05\5.1.php)

  <HTML>
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></HEAD>
  <BODY>
  <?php
    function sayhello($customer){
          return $customer.", 欢迎您来到GoodHome酒店。";
    }
    echo sayhello('张先生');
  ?>
  </BODY>
  </HTML>

本程序运行结果如图5-1所示。

image

图5-1 程序运行结果

【案例分析】

此函数的返回值是通过值返回的。也就是说return语句返回值时,创建了一个值的副本,并把它返回给使用此函数的命令或函数,在这里是echo命令。

5.1.3 向函数传递参数数值

由于函数是一段封闭的程序。很多时候,程序员都需要向函数内传递一些数据来进行操作。

  function 函数名称(参数1,参数2){
           算法描述,其中使用参数1和参数2;
  }

下面以酒店房间住宿费总价为例进行讲解。

【例5.2】(实例文件:ch05\5.2.php)

  <HTML>
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></HEAD>
  <BODY>
  <?php
    function totalneedtopay($days,$roomprice){
           $totalcost = $days*$roomprice;
  		 "需要支付的总价:$totalcost"."元。";
    }
    $rentdays = 3;
    $roomprice = 168;
    totalneedtopay($rentdays,$roomprice);
    totalneedtopay(5,198);
  ?>
  </BODY>
  </HTML>

运行结果如图5-2所示。

image

图5-2 程序运行结果

【案例分析】

(1)以这种方式传递参数数值的方法就是向函数传递参数数值。

(2)其中function totalneedtopay($days,$roomprice){}定义了函数和参数。

(3)不管是通过变量$rentdays和$roomprice向函数内传递参数数值,还是像totalneedtopay (5,198)这样直接在传递参数数值都是一样的。

5.1.4 向函数传递参数引用

向函数传递参数引用,其实就是向函数传递变量引用。参数引用一定是变量引用,静态数值是没有引用一说的。由于在变量引用中已经知道,变量引用其实就是对变量名的使用,是对特定的一个变量位置的使用。

下面仍然以酒店服务费总价为例进行讲解。

【例5.3】(实例文件:ch05\5.3.php)

  <HTML>
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></HEAD>
  <BODY>
  <?php
     $fee = 300;
    $serviceprice = 50;
    function totalfee(&$fee,$serviceprice){
           $fee = $fee+$serviceprice;
  		 echo "需要支付的总价:$fee"."元。";
    }
    totalfee($fee,$serviceprice);
    totalfee($fee,$serviceprice);
  ?>
  </BODY>
  </HTML>

运行结果如图5-3所示。

image

图5-3 程序运行结果

【案例分析】

(1)以这种方式传递参数数值的方法就是向函数传递参数引用。使用“&”符号表示参数引用。

(2)其中function totalfee(&$fee,$serviceprice){}定义了函数、参数和参数引用。变量$fee是以参数引用的方式进入函数的。当函数的运行结果改变了变量$fee的引用的时候,在函数外的变量$fee的值也发生了改变。也就是函数改变了外部变量的值。

5.1.5 从函数中返回值

以上的一些例子中,都是把函数运算完成的值直接打印出来。但是,很多情况下,程序并不需要直接把结果打印出来,而是仅仅给出结果,并且把结果传递给调用这个函数的程序,为其所用。

这里需要使用到return关键字。下面以综合酒店客房价格和服务价格为例进行讲解。

【例5.4】(实例文件:ch05\5.4.php)

  <HTML>
  <HEAD><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /></HEAD>
  <BODY>
  <?php
   function totalneedtopay($days,$roomprice){
           return $days*$roomprice;	
   }
    $rentdays = 3;
    $roomprice = 168;
    echo totalneedtopay($rentdays,$roomprice);
  ?>
  </BODY>
  </HTML>

运行结果如图5-4所示。

image

图5-4 程序运行结果

【案例分析】

(1)在函数function totalneedtopay($days,$roomprice)的算法中,直接使用return把运算的值返回给调用此函数的程序。

(2)其中echo totalneedtopay($rentdays,$roomprice);语句调用了此函数,totalneedtopay()把运算值返回给了echo语句才有上面的显示。当然这里也可以不用echo来处理返回值,也可以对它进行其他处理,如赋值给变量等。

5.1.6 对函数的引用

不管是PHP中的内置函数,还是自定义函数,都可以直接通过函数名调用。但是在操作过程中也有些不同,大致分为以下3种情况。

(1)如果是PHP的内置函数,如date(),可以直接调。

(2)如果这个函数是PHP的某个库文件中函数,则需要用include()或require()命令把此库文件加载,然后才能使用。

(3)如果是自定义函数,且与引用程序同在一个文件中,则可直接引用。如果此函数不在当前文件内,则需要用include()或require()命令加载。

教程类别