一、什么是PHP函数
函数就是功能。调用一个函数就是在调用一个功能。
二、PHP 函数准则
函数的名称应该提示出它的功能。
函数名称以字母或下划线开头(不能以数字开头)。
三、函数的语法
function 函数名称(类型: 参数列表): 返回值类型
{
// 函数体
return 返回值;
}
四、函数的分类
| 1 | 自定义函数 | function abc(){...}
| 用户根据业务需求创建|
举例:
function abc(){
echo '正是江南好风景';
}
abc();
运行效果:
| 2 | 系统函数 | substr(), count()...
| 也叫预定义函数,不必声明直接调用|
举例:
$count = '200';
echo $count;
运行效果:
| 3 | 可变函数 | $funcName();
| 函数名使用变量表示|
举例:
function xyz(int $money,float $discount):float
{
return $money * $discount;
}
echo '数字是:' . xyz(6000,0.8);
echo '<hr>';
$funcName = 'xyz';
echo '数字是:' . xyz(5000,0.5);
echo '数字是:' . $funcName(5000,0.5);
echo '<hr>';
运行效果:
| 4 | 匿名函数 | $f = function (){...}
| 也叫”闭包”或”函数表达式”,常用做回调处理 |
举例:
$great = function($big)
{
echo $big . '又大又圆的苹果';
};
$great('桔子');
$great('西瓜');
运行效果:
五、函数多值返回的四种形式
函数必须要有返回值,并且必须遵守“单值返回”原则。
举例:
function sub($x,$y)
{
$final=$x-$y;
return $final;
}
echo "20 - 5 = " . sub(20,5);
运行效果:
如果需要返回多个值,可以通过以下手段。
| 1 | string
| 字符串拼接 |
举例:
function small ():string
{
$number = 1;
$name = '张三丰';
return $number . ':' . $name;
}
echo small();
echo '<br>';
function small2 ():string
{
$number = 2;
$name = '李寻欢';
return $number . ':' . $name;
}
echo small2();
echo '<br>';
function small3 ():string
{
$number = 3;
$name = '陆小凤';
return $number . ':' . $name;
}
echo small3();
运行效果:
| 2 | array
| 数组 |
举例:
function small4 (): array
{
$number = 1;
$name = '张三丰';
return ['number'=>1,'name'=>'张三丰'];
}
printf('<pre>%s</pre>',print_r(small4(),true));
echo '<hr>';
function small_numbers ()
{
return array ( 1 , 3 , 5 );
}
list ( $one , $three , $five ) = small_numbers ();
printf('<pre>%s</pre>',print_r(small_numbers(),true));
运行效果:
| 3 | json
| JSON 字符串 |
举例:
function small4 (): array
{
$number = 1;
$name = '张三丰';
return ['number'=>1,'name'=>'张三丰'];
}
//echo '<pre>' .print_r(small4(),true)'</pre>';
printf('<pre>%s</pre>',print_r(small4(),true));
echo '<hr>';
function small5() : string
{
//json encode():
return json_encode(['number'=>1,'name'=>'张三丰']);
}
echo small5();
// {
// "number": 1,
// "name": "\u5f20\u4e09\u4e30"
// }
echo '<hr>';
function small6() : string
{
//json encode():
return json_encode(['number'=>1,'name'=>'张三丰']);
}
$data = small6();
echo $data;
运行效果:
| 4 | serialize
| 序列化字符串 |
举例:
function small4 (): array
{
$number = 1;
$name = '张三丰';
return ['number'=>1,'name'=>'张三丰'];
}
function small7() : string
{
return serialize(['number'=>1,'name'=>'张三丰']);
}
echo small7();
//反序列化才可以使用
$arr = unserialize(small7());
printf('<pre>%s</pre>',print_r($arr,true));
运行效果:
六、函数的四种参数
| 1 | 值参数 | 默认传参方式 |
举例:
function number1(float $arg) : float
{
return $arg *= 3;
}
$value = 40;
echo number1($value) , '<br>';
echo $value;
运行效果:
| 2 | 引用参数 | 改变原始调用参数值 |
举例:
function number2(float &$arg) : float
{
return $arg *= 5;
}
$value = 35;
echo number2($value) , '<br>';
echo $value;
运行效果:
| 3 | 默认参数 | 调用时允许省略的参数 |
举例:
function number3(float $x, float $y, string $opt = '+')
{
$res = 0;
switch ($opt){
case '+' :
$res = "$x + $y =" .($x + $y);
break;
case '-' :
$res = "$x - $y =" .($x - $y);
break;
case '*' :
$res = "$x * $y =" .($x * $y);
break;
case '/' :
$res = "$x / $y =" .($x / $y);
break;
default:
$res = '非法操作符';
}
return $res;
}
echo number3(15,7), '<br>';
echo number3(13,50,'*'), '<br>';
echo number3(5,78,'#'), '<br>';
运行效果:
| 4 | 剩余参数 | 调用参数数量不确定 |
举例:
function number6(...$args) : float
{
return array_sum($args);
}
$arr = [1,3,5,7,9,11,13,15,17];
print_r(number6(...$arr));
运行效果:
七、总结函数的特点
1.可以在页面的任何位置调用函数。
2.函数名只能是字母,数字,下划线的组合,并且之间不能包含空格,数字不能放在变量名首位。与变量的命名类似。
3.函数名不区分大小写。
4.函数命名具有唯一性。
5.json是特殊的序列化返回值。