手册

目录

函数

收藏847

阅读2675

更新时间2025-08-06

PHP 内置函数

PHP 拥有超过 1000 个内置函数,可以直接在脚本内部调用,以执行特定的任务。

请参阅:PHP 内置函数参考手册。

PHP 用户自定义函数

除了 PHP 内置函数之外,还可以创建自己的函数。

  • 函数是程序中可以重复使用的一组语句块。
  • 页面加载时,函数不会自动执行。
  • 函数将通过调用函数来执行。

创建函数

用户定义的函数声明以关键字 function 开头,后跟函数名:

实例

function myMessage() {
  echo "Hello world!";
}

注意:函数名必须以字母或下划线开头。函数名不区分大小写。

提示:请给函数一个反映函数功能的名称!

调用函数

要调用函数,只需写函数名,后跟一对括号 ()

实例

function myMessage() {
  echo "Hello world!";
}

myMessage();
运行实例 »

点击 "运行实例" 按钮查看在线实例

在我们的例子中,我们创建了一个名为 myMessage() 的函数。

左大括号 { 表示函数代码的开始,右大括号 } 表示函数代码的结束。

该函数输出 "Hello world!"。

PHP 函数参数

可以通过参数将信息传递给函数。参数就像变量一样。

参数在函数名后面指定,位于括号内。您可以添加任意数量的参数,只需用逗号分隔即可。

下例有一个带有一个参数 ($fname) 的函数。当调用 familyName() 函数时,我们也传递一个名称,例如 ("Jani"),然后在函数内部使用该名称,该函数输出几个不同的名字,但姓氏相同:

实例

function familyName($fname) {
  echo "张" .$fname. "
"; } familyName("建平"); familyName("建英"); familyName("和平"); familyName("志平"); familyName("红英");
运行实例 »

点击 "运行实例" 按钮查看在线实例

下例有一个带有两个参数 ($fname, $year) 的函数:

实例

function familyName($fname, $year) {
  echo "张" . $fname . "生于 " . $year . " 年。
"; } familyName("建平", "1965"); familyName("建英", "1958"); familyName("和平", "1957");
运行实例 »

点击 "运行实例" 按钮查看在线实例

PHP 默认参数值

下例显示了如何使用默认参数。如果我们调用 setHeight() 函数而不带参数,它将使用默认值作为参数:

实例

function setHeight($minheight = 50) {
  echo "高度是:$minheight 
"; } setHeight(350); setHeight(); // 将使用默认值 50 setHeight(135); setHeight(80);
运行实例 »

点击 "运行实例" 按钮查看在线实例

PHP 函数 - 返回值

要让函数返回一个值,请使用 return 语句:

实例

function sum($x, $y) {
  $z = $x + $y;
  return $z;
}

echo "5 + 10 = " . sum(5, 10) . "
"; echo "7 + 13 = " . sum(7, 13) . "
"; echo "2 + 4 = " . sum(2, 4);
运行实例 »

点击 "运行实例" 按钮查看在线实例

按引用传递参数

在 PHP 中,参数通常按值传递,这意味着在函数中使用的是值的副本,并且传递给函数的变量不会被更改。

当函数参数按引用传递时,对参数的更改也会更改传入的变量。要将函数参数转换为引用,请使用 & 运算符:

实例

使用按引用传递的参数来更新变量:

function add_five(&$value) {
  $value += 5;
}

$num = 2;
add_five($num);
echo $num;
运行实例 »

点击 "运行实例" 按钮查看在线实例

可变数量的参数

通过在函数参数前使用 ... 运算符,函数可以接受未知数量的参数。这也称为可变参数函数。

可变参数函数的参数会成为数组。

实例

一个不知道将获取多少参数的函数:

function sumMyNumbers(...$x) {
  $n = 0;
  $len = count($x);

  for($i = 0; $i < $len; $i++) {
    $n += $x[$i];
  }
  return $n;
}

$a = sumMyNumbers(5, 2, 6, 2, 7, 7);
echo $a;
运行实例 »

点击 "运行实例" 按钮查看在线实例

你只能有一个可变长度的参数,并且它必须是最后一个参数。

实例

可变参数必须是最后一个参数:

function myFamily($lastname, ...$firstname) {
  txt = "";
  $len = count($firstname);
  for($i = 0; $i < $len; $i++) {
    $txt = $txt."Hi, $firstname[$i] $lastname.
"; } return $txt; } $a = myFamily("Gates", "Bill", "Steve", "Elon"); echo $a;
运行实例 »

点击 "运行实例" 按钮查看在线实例

如果可变参数不是最后一个参数,将会出现错误。

实例

在两个参数中的第一个参数上使用 ... 运算符,将会引发错误:

function myFamily(...$firstname, $lastname) {
  $txt = "";
  $len = count($firstname);
  for($i = 0; $i < $len; $i++) {
    $txt = $txt."Hi, $firstname[$i] $lastname.
"; } return $txt; } $a = myFamily("Gates", "Bill", "Steve", "Elon"); echo $a;
运行实例 »

点击 "运行实例" 按钮查看在线实例

PHP 是一种弱类型语言

在上面的例子中,请注意,我们不需要告诉 PHP 变量是什么数据类型。

PHP 会根据变量的值自动为其关联数据类型。由于数据类型不是严格设置的,因此您可以执行诸如将字符串添加到整数之类的操作而不会引发错误。

在 PHP 7 中,添加了类型声明。这给了我们一个选项,可以在声明函数时指定预期的数据类型,并通过添加严格声明,在数据类型不匹配时抛出“致命错误”。

在下例中,我们尝试在不使用严格声明的情况下向函数发送一个数字和一个字符串:

实例

function addNumbers(int $a, int $b) {
  return $a + $b;
}
echo addNumbers(5, "5 days");
// 由于没有启用严格声明,"5 days" 被更改为 int(5),并返回 10
运行实例 »

点击 "运行实例" 按钮查看在线实例

要指定严格声明,我们需要设置 declare(strict_types=1);。这必须在 PHP 文件的第一行。

在下例中,我们尝试向函数发送一个数字和一个字符串,但在这里我们添加了严格声明:

实例


运行实例 »

点击 "运行实例" 按钮查看在线实例

严格声明强制按预期方式来使用参数。

PHP 返回类型声明

PHP 7 还支持 return 语句的类型声明。与函数参数的类型声明一样,通过启用严格声明,在类型不匹配时将抛出“致命错误”。

要在函数声明中声明返回类型,请在声明函数时在左大括号 ( { ) 之前添加冒号 ( : ) 和类型。

在下例中,我们指定了函数的返回类型:

实例


运行实例 »

点击 "运行实例" 按钮查看在线实例

您可以指定与参数类型不同的返回类型,但请确保返回是正确的类型:

实例



运行实例 »

点击 "运行实例" 按钮查看在线实例

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号