跳至内容

函数

这篇讲 PHP 函数的定义与调用,涵盖参数传递、默认值、返回值,以及现代 PHP(7.x+)的类型声明特性。

函数定义与调用

函数是可在程序中重复使用的语句块,只在被调用时执行:

<?php
function sayHi() {
    echo "Hello world!";
}

sayHi();  // 调用函数
?>

函数命名规范:

  • 以字母或下划线开头(不能以数字开头)
  • 函数名不区分大小写(但调用时建议保持一致)
  • 函数名应反映其功能

带参数的函数

通过参数向函数传递信息。参数定义在函数名后的括号内,逗号分隔:

<?php
function greet($name, $time) {
    echo "Good $time, $name!<br>";
}

greet("Li", "morning");
greet("Wang", "afternoon");
?>

默认参数值

可以为参数指定默认值,调用时未传入该参数则使用默认值:

<?php
function setHeight($minheight = 50) {
    echo "The height is: $minheight <br>";
}

setHeight(350);  // 使用传入值 350
setHeight();     // 使用默认值 50
?>
有默认值的参数必须放在没有默认值的参数之后,否则 PHP 会报错。

返回值

使用 return 语句让函数返回计算结果:

<?php
function sum($x, $y) {
    return $x + $y;
}

echo sum(5, 10);  // 输出 15
echo sum(7, 13);  // 输出 20
?>

类型声明(PHP 7+)

PHP 7 开始支持标量类型声明,能让函数签名更加明确、减少运行时类型错误:

<?php
// 参数类型声明 + 返回值类型声明
function add(int $a, int $b): int {
    return $a + $b;
}

echo add(5, 10);     // 15
// add("hello", 10); // 会触发 TypeError
?>

常用的类型声明:

类型说明
int / float / string / bool标量类型
array数组
?int可为 null 的整型
void函数不返回任何值
mixed任意类型(PHP 8.0+)

匿名函数

PHP 支持匿名函数(闭包),可以赋值给变量或作为参数传递:

<?php
$greet = function($name) {
    echo "Hello $name!";
};

$greet("PHP");  // Hello PHP!

// 作为回调使用
$numbers = [1, 2, 3];
$doubled = array_map(function($n) {
    return $n * 2;
}, $numbers);
// $doubled = [2, 4, 6]
?>
类型声明是可选的,但强烈建议在项目和团队协作中使用——它让代码意图更清晰,IDE 也能提供更好的自动补全和错误提示。

一句话小结

函数是代码复用的基本单位。function 关键字定义,return 返回值。PHP 7+ 支持类型声明,能有效减少类型相关的 bug。默认参数必须放在必选参数之后。下一篇讲 数组

最后更新于