一个函数是一个在程序中重复使用的语句块。 当一个页面加载时,一个函数不会立即执行。相反,对函数的调用将执行一个函数。 PHP的真正力量来自于它的函数;它有1000多个内置函数。
PHP函数
PHP函数与其他编程语言相似。函数是一段代码,在参数中再接受一个输入,做一些处理,并返回一个值。
你已经看到了许多函数,如push()和explode()等。它们都是内置的函数,但PHP给你提供了创建函数的选择。
这里有两个部分,你应该很清楚。
- 在PHP中创建一个用户定义的函数
- 在 PHP 中调用一个用户定义的函数
你几乎不需要创建你的PHP函数,因为已经有超过1000个为不同领域创建的内置函数库,你需要根据你的要求来调用它们。
在PHP中创建一个用户定义的函数
你可以创建一个函数;它的名字应该以关键字function 开头, 所有的PHP代码应该放在{和}大括号里。
function functionName() {
code to be executed;
}
函数名可以以字母或下划线开头,不能以数字开头。函数名不区分大小写,请看下面的代码:
<?php
function series() {
return 'Stranger Things';
}
我们已经创建了一个series()函数,用来返回Stranger Things 字符串。
我们已经创建了一个函数,但没有调用这个函数。
在PHP中调用一个用户定义的函数
好了,我们可以用下面的语法来调用这个函数。
functionName();
如果我们继续上面的例子,我们可以写下面的代码来调用这个PHP函数。
<?php
function series() {
return 'Stranger Things';
}
echo series();
我们正在打印来自series()函数的返回字符串。请看输出结果。
➜ pro php app.php
Stranger Things
➜ pro
带参数的PHP函数
PHP给你提供了在函数中传递参数的选项。
你可以传递任意多的参数。这些参数在函数中的作用类似于变量。
请看下面的代码:
<?php
function series($mike, $eleven) {
echo "Both {$mike} and {$eleven} are cute!";
}
series('Finn', 'Millie');
我们传递了两个参数,即eleven。我们在调用时提供了字符串或数字或任何你想传递的参数类型。
请看输出结果:
➜ pro php app.php
Both Finn and Millie are cute!
➜ pro
PHP会根据变量的值自动给它关联一个数据类型。由于数据类型不是严格意义上的设定,所以可以做一些事情,比如把一个字符串加到一个整数上而不会引起错误。
在PHP7中,增加了类型声明的内容。这给了我们一个选项,可以在声明函数时指定预期的数据类型,通过启用严格要求,在类型不匹配时将会抛出一个 "致命错误"。
请看下面的例子:
<?php
function series($jane, $eleven) {
echo $jane + $eleven;
}
series('Millie Bobby Brown', 11);
请看输出:
➜ pro php app.php
PHP Warning: A non-numeric value encountered in /Users/krunal/Desktop/code/php/pro/app.php on line 4
Warning: A non-numeric value encountered in /Users/krunal/Desktop/code/php/pro/app.php on line 4
11
➜ pro
我目前的PHP版本是这样的:
➜ pro php -v
PHP 7.2.14 (cli) (built: Jan 12 2019 05:21:04) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.14, Copyright (c) 1999-2018, by Zend Technologies
➜ pro
PHP默认参数值
如果实际参数没有给到函数,我们可以传递默认参数。
请看下面的代码:
<?php
function setPrice(int $florencebymills = 10) {
echo "The min price is : $florencebymills"."\n";
}
setPrice();
我们将默认价格定义为$florencebymills变量,它是10。
因此,当你调用setPrice() 函数时,你不一定需要传递参数。但是,你仍然会得到默认值,也就是10。请看输出。
➜ pro php app.php
The min price is : 10
➜ pro
但是,你也可以通过提供实际值来覆盖默认值,如下所示:
<?php
function setPrice(int $florencebymills = 10) {
echo "The min price is : $florencebymills"."\n";
}
setPrice(14);
我们将14作为一个实际的参数传递。所以,它将覆盖正式参数。
请看输出:
➜ pro php app.php
The min price is : 14
➜ pro
动态函数调用
可以将函数名作为字符串分配给变量,然后像对待函数名本身一样精确地对待它们。
请看下面的代码:
<?php
function lyrics() {
echo "KGB was dogging me!";
}
$sim = "lyrics";
$sim();
在上面的代码中,我们已经定义了lyrics() 函数。
然后我们定义了一个变量,其值与函数名相同,然后我们将该变量视为一个函数,并调用该函数,看到输出:
➜ pro php app.php
KGB was dogging me!
➜ pro
本教程到此结束。