当前位置:  首页>> 技术小册>> PHP8入门与项目实战(2)

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

下面以综合酒店客房价格和服务价格为例进行讲解。

【例4.5】

  1. <?php
  2. function totalneedtopay($days,$roomprice){// 声明自定义函数
  3. return $days*$roomprice; // 返回酒店消费总价格
  4. }
  5. $rentdays = 3;
  6. $roomprice = 168;
  7. echo totalneedtopay($rentdays,$roomprice);
  8. ?>

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

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

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

4.2.5 对函数的引用
无论是PHP中的内置函数,还是程序员在程序中自定义的函数,都可以简单地通过函数名调用。但是操作过程也有些不同,大致分为以下3种情况。

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

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

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

对函数的引用实际上是对函数返回值的引用。

【例4.6】

  1. <?php
  2. function &example($aa=1){ //定义一个函数,别忘了加“&”符号
  3. return $aa; //返回参数$aa
  4. }
  5. $bb= &example("引用函数的实例"); //声明一个函数的引用$bb
  6. echo $bb. "<br/>";
  7. ?>

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

【案例分析】
(1)本实例首先定义一个函数,然后变量$bb将引用函数,最后输出变量$bb,它实际上是$aa的值。(2)和参数传递不同,在定义函数和引用函数时,都必须使用“&”符号,表明返回的是一个引用。

4.2.6 对函数取消引用

对于不需要引用的函数,可以做取消操作。取消引用使用unset()函数来完成,目的是断开变量名和变量内容之间的绑定,此时并没有销毁变量内容。

【例4.7】

  1. <?php
  2. $num = 166; //声明一个整型变量
  3. $math = &$num; //声明一个对变量$num的引用$math
  4. echo "\$math is: ".$math."<br/>"; //输出引用$math
  5. unset($math); //取消引用$math
  6. echo "\$num is: ".$num; //输出原变量
  7. ?>

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

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

4.3 声明函数返回值的类型
在PHP中,用户可以声明函数返回值的类型。可以声明的返回类型包括int、float、bool、string、interfaces、array和callable。

下面通过案例来学习PHP如何声明函数返回值的类型。
【例4.8】

  1. <?php
  2. declare(strict_types=1);
  3. function returnIntValue(int $value): int
  4. {
  5. return $value;
  6. }
  7. print(returnIntValue(60));
  8. ?>

以上程序执行结果如图4-8所示。

4.4 intdiv()函数
在PHP中,整除函数intdiv()的语法格式如下:

  1. intdiv(a, b);

该函数返回值为a除以b的值并取整。

【例4.9】

  1. <?php
  2. echo intdiv(16, 3)."<br/>";
  3. echo intdiv(10, 3) ."<br/>";
  4. echo intdiv(8, 16) ."<br/>";
  5. ?>

本程序运行结果如图4-9所示。

4.5 括号在变量或函数中变化
在PHP中,用括号把变量或者函数括起来将不再起作用。
【例4.10】

  1. <?php
  2. function getArray()
  3. {
  4. return [100, 200, 300,400];
  5. }
  6. $last = array_pop(getArray());
  7. //所有版本的PHP在这里将会报错
  8. $last = array_pop((getArray()));
  9. //PHP5或者更早的版本将不会报错
  10. ?>

注意第二句的调用是用圆括号包了起来,但还是报这个严格错误,如图4-10所示。

PHP 7之前的版本是不会报第2个错误的。例如,在PHP 5中的运行结果如图4-11所示。


该分类下的相关小册推荐: