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