函数的四种类型
1,自定义函数
function demo1($a,$b)
{
return $a+$b;
}
echo demo1(1,2).'<hr>';
2,系统函数,系统自带的函数无需定义可以直接使用,例如:isset()函数
$text='www.php.cn';
if (isset($text)):
echo '$text的值是'.$text.'<hr>';
else:
echo '$text的值是空的'.'<hr>';
endif;
3,可变函数,将一个变量赋值为函数然后调用,例如:
//创建一个函数demo2
function demo2($a,$b)
{
return '当前函数是:'.__FUNCTION__.'<br>结果是:'.($a+$b);
}
//创建一个函数demo3
function demo3($a,$b)
{
return '当前函数是:'.__FUNCTION__.'<br>结果是:'.$a*$b;
}
//将'demo2'函数赋值给$func
$func='demo2';
//赋值后的$func相当于'demo2'
echo $func(5,6).'<hr>';
//将'demo3'函数赋值给$func
$func='demo3';
//这时发现同样运行$func(5,6),因为$func值不同所执行的函数与结果也不同
echo $func(5,6).'<hr>';
4,匿名函数,没有函数名的函数,需要赋值到变量来使用,例如:
//匿名函数可以使用'use()'命令引用公共变量.
$c=100;
$func=function($a,$b)use($c){return $a+$b+$c;};
echo $func(5,8).'<hr>';
函数多值返回的四种形式
1,字符串拼接,将多个字符串结果拼接输出
function demo1($a,$b)
{
return $a.'|'.$b;
}
echo demo1('php中文网','www.php.cn').'<hr>';
2,用数组返回结果
function demo2($a,$b)
{
//将要返回的结果装入数组中
$c=['name'=>$a,'URL'=>$b];
//返回数组
return $c;
}
echo '<pre>'. print_r (demo2('php中文网','www.php.cn'),true).'<pre><hr>';
3,用json字符串的方式返回结果
function demo3($a,$b)
{
//将要返回的结果装入数组中
$c=['name'=>$a,'URL'=>$b];
//返回json字符串,设置编码模式为:JSON_UNESCAPED_UNICODE
return json_encode($c,JSON_UNESCAPED_UNICODE);
}
$result= demo3('php中文网','www.php.cn');
echo $result.'<br>';
//将json转为数组
$arr=json_decode($result,true);
//显示结果
echo '<pre>'. print_r ($arr,true).'<pre><hr>';
4,用序列化字符串的方式返回
function demo4($a,$b)
{
//将要返回的结果装入数组中
$c=['name'=>$a,'URL'=>$b];
//将数组转换为序列化字符串返回
return serialize($c);
}
//运行函数
$result= demo4('php中文网','www.php.cn');
//显示结果
echo $result.'<br>';
//将序列化的结果转换为数组
echo '<pre>'. print_r (unserialize($result),true).'<pre><hr>';
函数的四种参数
1,值参数
function demo1($a,$b)
{
return $a+$b;
}
echo demo1(1,2).'<hr>';
2,引用参数
$c=100;
//将第二个参数设置成引用参数
function demo2($a,&$b)
{
return $b+=$a;
}
//将$c传入到第二个参数
demo2(50,$c);
//显示$c的值,这时$c的值已经改变为150
echo $c.'<hr>';
3,默认参数
//将$c设置为默认参数初始值为100
function demo3($a,$b,$c=100)
{
return $a+$b+$c;
}
//当demo3的第三个参数未设置时$c的值为100,所以结果为103
echo demo3(1,2).'<br>';
//也可设置默认参数的值,此时$c的值为10,所以结果为13
echo demo3(1,2,10).'<hr>';
4,剩余参数
//第一种方法
function demo4()
{ //获取传入参数所组成的数组
$arr=func_get_args();
//遍历数组求和
foreach ($arr as $key => $value) {
$result+=$value;
}
//返回参数的总和
return $result;
}
//demo4可以传入任意数量的参数
echo demo4(1,2,3,4,5,6,7,8,9,10).'<br>';
//第二种方法
$arr=[1,2,3,4,5,6,7,8,9,100];
//'...'将传入的参数打包成数组
function demo5(...$arr)
{
return array_sum($arr);
}
//'...'可以将数组转换为普通格式
echo demo5(...$arr).'<br>';