PHP 函数
PHP 的真正强大之处在于其函数。
PHP 拥有超过 1000 个内置函数,此外您还可以创建自己的自定义函数。
PHP 内置函数
PHP 拥有超过 1000 个内置函数,可以直接在脚本中调用,以执行特定任务。
请查看我们的 PHP 参考,了解 PHP 内置函数的 完整概述。
PHP 用户定义函数
除了内置的 PHP 函数外,还可以创建自己的函数。
- 函数是一组可以重复使用的语句块。
- 函数在页面加载时不会自动执行。
- 函数将通过调用该函数来执行。
创建函数
用户定义函数声明以关键字 function
开头,后跟函数名称
示例
function myMessage() {
echo "Hello world!";
}
注意: 函数名称必须以字母或下划线开头。函数名称不区分大小写。
提示: 为函数起一个能反映其功能的名称!
调用函数
要调用函数,只需写出其名称,后跟括号 ()
在我们的示例中,我们创建了一个名为 myMessage()
的函数。
开头的花括号 {
表示函数代码的开始,结尾的花括号 }
表示函数代码的结束。
该函数输出“Hello world!”。
PHP 函数参数
信息可以通过参数传递给函数。参数就像变量一样。
参数在函数名之后、括号内指定。您可以添加任意数量的参数,只需用逗号分隔即可。
下面的示例有一个带有一个参数 ($fname)
的函数。当调用 familyName()
函数时,我们也会传递一个名字,例如 ("Jani")
,这个名字在函数内部使用,输出多个不同的名字,但姓氏相同。
示例
function familyName($fname) {
echo "$fname Refsnes.<br>";
}
familyName("Jani");
familyName("Hege");
familyName("Stale");
familyName("Kai Jim");
familyName("Borge");
自己动手试一试 »
下面的示例有一个带有两个参数 ($fname, $year)
的函数
示例
function familyName($fname, $year) {
echo "$fname Refsnes. Born in $year <br>";
}
familyName("Hege", "1975");
familyName("Stale", "1978");
familyName("Kai Jim", "1983");
自己动手试一试 »
PHP 默认参数值
下面的示例演示了如何使用默认参数。如果我们调用 setHeight()
函数而没有传递参数,它将使用默认值作为参数。
示例
function setHeight($minheight = 50) {
echo "The height is : $minheight <br>";
}
setHeight(350);
setHeight(); // will use the default value of 50
setHeight(135);
setHeight(80);
自己动手试一试 »
PHP 函数 - 返回值
要让函数返回值,请使用 return
语句。
示例
function sum($x, $y) {
$z = $x + $y;
return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
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.<br>";
}
return $txt;
}
$a = myFamily("Doe", "Jane", "John", "Joey");
echo $a;
自己动手试一试 »
如果可变参数不是最后一个参数,您将收到一个错误。
示例
在两个参数中的第一个参数上使用 ...
运算符,将引发一个错误
function myFamily(...$firstname, $lastname) {
$txt = "";
$len = count($firstname);
for($i = 0; $i < $len; $i++) {
$txt = $txt."Hi, $firstname[$i] $lastname.<br>";
}
return $txt;
}
$a = myFamily("Doe", "Jane", "John", "Joey");
echo $a;
自己动手试一试 »
PHP 是一种弱类型语言
在上面的示例中,请注意,我们不必告诉 PHP 变量是什么数据类型。
PHP 会根据变量的值自动为其关联数据类型。由于数据类型不是严格定义的,您可以执行诸如将字符串添加到整数中而不会导致错误的操作。
在 PHP 7 中,添加了类型声明。这使我们可以在声明函数时指定预期的数据类型,并通过添加 strict
声明,如果数据类型不匹配,它将抛出一个“致命错误”。
在下面的示例中,我们尝试在不使用 strict
的情况下将数字和字符串都发送到函数中
示例
function addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5 days");
// since strict is NOT enabled "5 days" is changed to int(5), and it will return 10
自己动手试一试 »
要指定 strict
,我们需要设置 declare(strict_types=1);
。这必须放在 PHP 文件的第一行。
在下面的示例中,我们尝试将数字和字符串都发送到函数中,但在这里我们添加了 strict
声明
示例
<?php declare(strict_types=1); // strict requirement
function addNumbers(int $a, int $b) {
return $a + $b;
}
echo addNumbers(5, "5 days");
// since strict is enabled and "5 days" is not an integer, an error will be thrown
?>
自己动手试一试 »
strict
声明强制事物按照预期方式使用。
PHP 返回类型声明
PHP 7 还支持 return
语句的类型声明。与函数参数的类型声明一样,通过启用严格要求,它将在类型不匹配时抛出“致命错误”。
要为函数返回值声明类型,请在声明函数时,在左花括号 ( {
) 前添加一个冒号 ( :
) 和类型。
在下面的示例中,我们为函数指定了返回类型
示例
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : float {
return $a + $b;
}
echo addNumbers(1.2, 5.2);
?>
自己动手试一试 »
您可以指定与参数类型不同的返回类型,但请确保返回值的类型正确
示例
<?php declare(strict_types=1); // strict requirement
function addNumbers(float $a, float $b) : int {
return (int)($a + $b);
}
echo addNumbers(1.2, 5.2);
自己动手试一试 »