<?php练功房

第 3 章 · 函数 · 第 3.1 课

函数

约 15 分钟

函数把一段代码打包起来,起个名字,以后反复调用。用 function 定义,return 返回结果。

默认参数、类型声明、命名参数

  • 参数可以有默认值:$discount = 1.0,调用时不传就用默认值。
  • 可以声明参数和返回值的类型:float $amount、: string。传错类型时 PHP 会尽量转换,转换不了就报错,能尽早发现 bug。
  • PHP 8 支持命名参数:调用时写 参数名: 值,可以不按顺序,也更易读。

可变参数和返回多个值

...$nums 把所有传进来的参数收集成一个数组。想返回多个值时,可以返回一个数组,调用处用 [$a, $b] = ... 解构。

?int 表示“int 或 null”,void 表示不返回任何值。

选择题

下面代码输出什么?

<?php
function f($a, $b = 2) {
    return $a * $b;
}
echo f(3);

练习 1

是不是偶数

补全函数 isEven:参数是偶数时返回 true,否则返回 false。注意是 return,不是 echo。

检查时会调用 isEven(4)、isEven(7)、isEven(0)、isEven(-3)。

练习 2

FizzBuzz 函数版

写函数 fizzbuzz(int $n): string,按 FizzBuzz 规则返回字符串:能被 15 整除返回 "FizzBuzz",被 3 整除返回 "Fizz",被 5 整除返回 "Buzz",其他返回数字本身(字符串形式)。

练习 3

求平均数

写函数 average(array $nums): float,返回平均值。空数组返回 0(直接除会报 Division by zero 错误)。