函数:封装一段用于完成特定功能的代码
系统函数:php编程系统自带的函数
自定义函数:指需要自己来定义的函数,可以自己设置函数名称,参数数量以及执行代码;关键字为function
参数设置:
1、无参函数:适用于不需要提供任何数据即可完成指定功能的情况
代码:
<?php
function shout()
{
return 'come on';
}
echo shout();// 输出结果:come o
?>
结果:
2、按值传递参数:在函数内部可以随意对用户传递的参数进行操作
代码:
<?php
function setPoint($x,$z,$y=0){
echo "{".$x.",".$y.",".$z."}";
}
setPoint(5,90);
?>
结果:
注意:默认值必须是常量表达式,不能是变量。且带默认值的参数只能位于参数列表的最后,即一个带有默认值参数的右边不能出现没有指定参数值的参数
3、引用传参:通过函数参数的引用传递来实现函数参数值的修改
代码:
<?php
function modify(&$string)
{
$string = '我这下雪啦';
}
$str = '你那下雪啦吗?';
modify($str);
echo $str; // 输出:'你那下雪啦吗?'
?>
结果:
默认值参数:给参数设置一个默认值,调用者未传递该参数时,函数将使用默认值进行操作
代码:
<?php
function say($p, $con = '"Hello"')
{
return "$p say $con";
}
echo say('Tom');
?>
结果:
变量的作用域:变量只有在其作用范围内才可以被使用,这个作用范围称为变量的作用域
代码:
?php
function test()
{
$sum = 36; // 局部变量
return $sum;
}
$sum = 0; // 全局变量
echo test(); // 输出结果:36
echo '<br/>';
echo $sum; // 输出结果:0
?>
结果:
全局变量:global关键字、超全局变量$GLOBALS[变量名]
代码:
<?php
$x=100;
function test(){
global $x;
$y=10;
return $x+$y;
}
echo test();//110
?>
结果:
静态变量:所有的全局变量都是静态变量;局部变量只有在定义时加上修饰符static,才为局部静态变量
代码:
<?php
function num()
{
static $i = 1;
echo $i;
++$i;
}
echo num().'<br/>';
echo num().'<br/>';
echo num();
?>
结果:
函数的嵌套调用:
嵌套调用:指的是在调用一个函数的过程中,调用另外一个函数
代码:
<?php
function sum($yuwen,$shuxue){
$sun=$yuwen+$shuxue;
return $sun;
}
function avg($yuwen,$shuxue){
$avg=sum($yuwen,$shuxue)/2;
return $avg;
}
$avg=avg(50,80);
echo $avg;
?>
结果:
递归调用:指的是一个函数在其函数体内调用自身的过程
代码:
<?php
function Fact($n) {
$sum=1;
if($n <= 1){
return 1;
}else{
$sum = $n * fact($n-1);
return $sum;
}
}
echo "5 的阶乘为: " .Fact(5)."<br>";
echo "3 的阶乘为: " .Fact(3)."<br>";
echo "4 的阶乘为: " .Fact(4)."<br>";
echo "10 的阶乘为: " .Fact(10);
?>
结果:
函数的高级应用:
可变函数:就是在一个变量名后添加一对圆括号“()”,让其变成一个函数的形式,然后PHP就寻找与变量值同名的函数,并且尝试执行它。
代码:
<?php
# 变量函数的用法:
function demo(){
echo "天王盖地虎! ";
}
$de='demo'; //将demo函数名赋给变量$de;
echo $de();//调用该变量名加();
?>
结果:
回调函数:就是把函数作为参数传入进另一个函数中使用,一般用作参数的传递。
代码:
<?php
function qwe($name,$age){
echo "我叫$name 我$age 岁了 <br>";
}
call_user_func('qwe', "张三",'18');
call_user_func('qwe', "李四",'24');
?>
结果: 将内置函数call_user_func()的参数值传递给qwe()函数
匿名函数:就是没有函数名称的函数,也称作闭包函数。临时定义的函数,使用时无需考虑命名冲突的问题
注意:匿名函数中使用外部的变量,需要通过use关键字实现。use关键字后圆括号“()”
例如:$sum = function($a, $b) use($c){ }
代码:
<?php
$sum = function($a, $b) { // 定义匿名函数
return $a + $b;
};
echo $sum(100, 200); // 输出结果:300
?>
结果:
匿名函数做回调函数使用:
代码:
<?php
function calculate($a, $b, $func)//回调函数
{
return $func($a, $b);
}
echo calculate(100, 200, function($a, $b) { // 输出结果:300
return $a + $b;
});
echo '<br>';
echo calculate(100, 200, function($a, $b) { // 输出结果:20000
return $a * $b;
});
?>
结果:
PHP的内置函数:
执行结果:
1-4
5-10