函数的类型、参数与返回值
一、函数的基本语法语法
functionfunctionName(类型限定参数列表):返回值类型
{
}
案例:计算两个数之和。
functionsum(int$a,int$b):string
{
return$a+$b;
}
echo sum(1,2);// 3
二、函数的分类
2.1 命名函数命名函数自动提升到脚本顶部,在全局任何地方都能调用。
// 按函数名称调用
demo1('残破的蛋蛋');
// 声明一个demo1函数
functiondemo1($name){
echo"My name is ${name}.";
}
以上代码会输出:My name is 残破的蛋蛋.
2.2 匿名函数没有指定具体函数名称的函数叫匿名函数,也叫闭包函数。
$var=function(){
// TODO
}
以上声明的就是一个匿名函数,它需要把函数赋给一个变量,然后通过变量去调用。
$demo2=function(){
echo"Hello World!";
}
$demo2();// Hello World!
匿名函数通过变量调用,以上结果为:Hello World!。
三、函数的参数
3.1 必选参数functionperson1(string$name):string
{
return"Hello, ${name}!";
}
echo person1('残破的蛋蛋')."
";// Hello, 残破的蛋蛋!
echo person1(123)."
";// Hello, 123!
echo person1(true)."
";// 报错
上述第三次函数调用报错的原因是:当限定了传入的参数类型为字符串时,标量(单值)会自动转换成字符串,但是布尔型、数组、类是无法自动转换的。
3.2 可选参数在定义函数的时候声明了参数,如果在调用的时候没有指定参数或者是少指定了参数,那么就会出现缺少参数的报错。在PHP中,支持函数的默认方式调用,即为函数的参数指定一个默认值,在调用函数的过程中如果没有指定参数的值,那么在函数中会使用参数的默认值。
functionperson2(string$name,int$age=20,string$sex="男"){
echo"我的名字是:${name},年龄:${age}岁,性别:${sex}。
";
}
// 我的名字是:残破的蛋蛋,年龄:20岁,性别:男。
person2('残破的蛋蛋');
在上述案例中我们确实为person2()函数声明了三个参数,但是我们只传了一个参数,其他两个参数都使用的是默认值。当调用函数传参的过程中,实参和形参是按照参数传递的顺序一一对应的,如果实参个数少于形参,则后面的形参不会被传值。当使用默认参数时,必须放在非默认参数的后面,否则可能会导致函数不会按照预期的执行。
3.3 不定参数语法
functionfunctionName(...$args){
// TODO
}
functi