函数定义
function 函数名(参数):返回值类型{
算法描述;
return:返回值;
}
系统函数举例:
<?php
echo rand(); //返回随机整数
echo "<br>";
echo rand(1000,9999);//返回四位随机整数
echo "<br>";
$str = "学习php哈哈";
echo mb_substr($str,1,5);//字符串截取
可变函数
<?php
function example(int $a ){
return $a *=$a;
}
$func = 'example';//函数别名
echo $func(2);
匿名函数
<?php
// 定义一个匿名函数,将其赋值给变量$fuc,方便使用
//同时演示匿名函数通过use()使用全局变量
$b = 10;
$fuc = function (int $a ) use ($b): int {
//返回$a 的绝对值
return abs($a * $b);
};
echo $fuc(-10);
返回值也是函数的情况下,注意调用传参的位置顺序
<?php
// 定义一个匿名函数,将其赋值给变量$fuc,方便使用
//同时演示匿名函数通过use()使用全局变量
$b = 10;
$fuc = function (int $a ) use($b) {
//返回$a 的绝对值
return function (int $g ) use ($a,$b) {
return abs( $a * $b) * $g ;
};
};
//先通过$fuc(-10)得到内部的匿名函数,继续传$g=30调用
echo $fuc(-10)(30);
返回值
1、一般返回
2、返回数组
<?php
function funArray(){
$age = 11;
$name = "php";
$num = "320";
//通过数组返回
return [ 'age'=>$age,'name'=>$name,'num' => $num];
}
var_dump((funArray()));
3、json返回
<?php
function funArray(){
$age = 11;
$name = "php";
$num = "320";
//存入数组
$arry = [ 'age'=>$age,'name'=>$name,'num' => $num];
//将数组转为json
return json_encode($arry);
}
var_dump((funArray()));
echo '<hr>';
$str = funArray();
//将json字符串解析
//对象
var_dump(json_decode($str));
echo '<hr>';
//数组
var_dump(json_decode($str,true));
4、序列化多值返回
<?php
// 通过序列化返回多个值
function funArray(){
$age = 11;
$name = "php";
$num = "320";
$arry = [ 'age'=>$age,'name'=>$name,'num' => $num];
//将数组转为序列返回
return serialize($arry);
}
var_dump((funArray()));
echo '<hr>';
$str = funArray();
//反序列化,将结果转为可用的数组
var_dump(unserialize($str));
echo '<hr>';
参数
1、一般的名称个数和类型声明参数
2、引用传递
- 通过取地址符&声明,改变被传入参数指向的地址存储的值
<?php
function change(int &$value) {
//将value执行的地址存储的值平方
$value *= $value;
}
$a = 30;
change($a);
//变量a执行的地址存储的值不再是30,而是900
echo $a;
3、默认参数
<?php
// $n 为默认参数,默认参数要放在后面,
function power($x, $n=2){
$s = 1;
while ($n > 0){
$n = $n - 1;
$s = $s * $x;
}
return $s;
}
// 当函数只给一个值的时候,默认n=2
echo power(5);
echo '<hr>';
//如果给2个参数,则第二个参数赋值给n
echo power(3,3);
4、剩余参数
<?php
function infor(...$args){
//func_get_arg()和func_get_args()可以返回参数当前的值
$arry= func_get_args($args);
//获取索引为1的参数值
$arg= func_get_arg(1);
echo $arg;
echo '<hr>';
return $arry;
}
//直接传入参数
var_dump(infor('男','50kg' ));
echo '<hr>';
//组装一个数组传入
$arry1 = ['张三',20];
var_dump(infor(...$arry1));
总结
- 函数的定义,注意命名的通用规范,使用驼峰hellowWorld,或者蛇形hello_world
- 函数的返回值,单值返回,或者组装成数组,json序列化返回
- 函数的参数形式,可以明确申明,或者使用默认参数,或者剩余参数