函数定义
<?php
function add($a, $b){
echo "定义了一个加法函数<br>";
return $a+$b;
}
$result = add(2, 3);
echo $result;
?>
变量范围
局部变量
- 也称内部变量,在函数内定义的,其作用域仅限于函数内部,离开该函数后再使用这种变量是非法错误的
全局变量
-
也称外部变量,在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾
-
在PHP函数中无法直接使用全局变量,如需使用必须使用global声明变量
静态变量
- 静态变量是指在函数内部定义变量的时候使用static关键字来定义变量
- 特点:函数执行完毕之后变量不会立刻消失,当再次调用函数时,静态变量保存的值依然存在,并且仅在第一次执行函数的时候会初始化值
<?php
$i = 10; //全局变量
function fn(){
$a = 1; //局部变量
echo $a."<br>"; //>>> 1
global $i; //函数内使用全局变量,需使用global声明
echo $i."<br>"; //>>> 10
static $j = 6; //静态变量
echo ++$j."<br>"; //>>> 7、8。。。:当第二次执行函数的时候,$j这个变量依然存在并且里面的值也依然存在
}
echo $a; //不能使用局域变量
echo $j; //不能使用静态变量
fn();
// fn();
?>
参数传递
按值传递参数
- 默认的,我们在传递参数的时候默认使用的就是这个方式
- 对形式参数的操作,根本不是影响到实际参数(变量)的值,两者相当于没有联系
按引用传递参数
- 按引用传递参数,相当于形式参数和实际参数指的是同一个人,只是名字不一样,对于形式参数的操作会直接影响到实际参数(变量)
函数的默认参数
- 可以给形式参数设置默认值,设置方法很简单直接赋值即可
- 给形式参数加默认值的时候是从右往左加的,右边的必须有,才能够给左边的加
可变长度参数列表
- PHP提供给我们的,可以直接使用
func_get_args();
func_get_arg();
func_num_args();
- 这三个函数可以使用在我们的自定义函数内部,能够返回给我们一些关于参数的信息
<?php
$i = 10;
// -----按值传递参数----------
function fn($a){
echo ++$a."<br>";
}
// fn($i);
// echo $i;
// -------按引用传递参数--------
function fn2(&$x){
echo ++$x."<br>";
}
// fn2($i);
// echo $i;
// -------函数的默认参数---------
function fn3($a=10){
echo ++$a."<br>";
}
// fn3();
// fn3(20);
// -------可变长度参数列表-------
function fn4(){
var_dump(func_get_args()); //返回一个数组
var_dump(func_get_arg(1)); //返回第几个参数,从0开始
var_dump(func_num_args()); //返回传入实参个数
}
fn4(111, 222, 333);
?>
变量函数
- 直接把函数赋值给变量
<?php
function fn(){
echo "我是fn函数";
}
$a = "fn"; //把函数名字加上引号,赋值给变量即可
$a(); //fn();
?>
递归函数
- 递归函数即在函数内部自己调用自己的函数
- 递到尽头再回归
<?php
function fn($n){
echo $n." ";
if($n>0){
fn($n-1);//内部调用自己
}else{
echo "<-->";
}
echo $n." ";
}
fn(3);
?>