函数可以比喻成我们现实生活中的 某个零件的制造部门
参数:原材料或者是这个零件的一些具体的参数
自定义函数
函数的定义
格式如下:
function 函数名([参数1,参数2····参数n ]){
函数体;//任何有效的PF护代码都可以作为函数体使用
return表达式; //可以从函数中返回一个值,也可以不返回
}
函数的调用:
不管是自己定义的函数还是系统提供的函数,如果函数不被调用就不会执行
调用:函数被调用后开始执行函数体中代码,执行的过程是相对独立的(如果调用两次同一个函数,这两个函数也是独立的),执行完毕返回调用的位置继续向下执行
把函数名字在另一行写一遍即为调用
函数参数和返回值:
参数:
形式参数由零个、一个或者多个变量组成
实际参数由零个、一个或者多个参数组成,每个参数是一个表达式,用逗号分隔
就是传入函数的变量
注:实际参数可以比形式参数多(多出来的也没用),但不能少
返回值:
函数的返回值是将函数执行后的结果返回给调用者
默认如果不写返回则函数的返回值为null
就是执行函数后函数输出的结果
例:
<?php
function add($a,$b){//形式参数
return $a+$b;//返回值
}
$i=add(10,20)//调用,实际参数
echo $i;
?>
PHP变量范围
1.局部变量
局部变量也称为内部变量。局部变量是在函数内定义的,其作用域仅限于函数内部,离开该函数后再使用这种变量就是非法错误的
function test(){
$a=1;//局部变量$a,尽在这个函数内部有效
}
echo $a;
2.全局变量
全局变量也称为外部变量,在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾
在PHP函数中无法直接使用全局变量,如需使用必须使用global声明变量!
$i=10;//全局变量(外部变量)
define('MY_NAME','学长帅');
function test(){
echo MY_NAME;
global $i;//声明$i为全局变量,然后再这个函数内部就可以使用$i
echo $i;
$a=1;
}
test();
3.静态变量
静态变量的是指在函数内部定义变量的时候使用static关键字来定义变量
特点:函数执行完毕之后变量不会立即消失,当再次调用函数时,静态变量保存的值依然存在,并且仅在第一次执行函数的时候会初始化值!
function test(){
static $a=10;//静态变量$a,初始化静态变量,尽在第一次调用的时候执行
echo ++$a;//当第二次执行这个函数的时候$a这个变量依然存在并且里面的也值依然存在!
}
test();
echo '<br />';
test();
echo;//和第一次调用函数结果一样都是11
参数的传递
1.按值传递参数
默认的,我们在传递参数的时候默认使用的就是这个方式
对形式参数的操作,根本不是影响到实际参数(变量)的值,两者相当于没有联系
<?php
function test($a){
echo ++$a;
}
$i=10;
test($i);
echo '<br />'.$i;//输出的$i还是10,并没有改变
2.按引用传递参数
按引用传递参数,相当于形式参数和实际参数指的是同一个人,只是名字不一样,对于形式参数的操作会直接影响到实际参数(变量)
<?php
function test(&$a){
echo ++$a;
}
$i=10;
test($i);
echo '<br />'.$i;//输出$i是11,已经改变
?>
3.函数的默认参数
可以给形式参数设置默认值,设置方法很简单直接赋值即可
给形式参数加默认值的时候是重右往左加的,右边的必须有,才能够给左边的加
<?php
function test($a=10){//参数的默认值
echo ++$a;
}
test(20);//如果没有实参20,则会按照默认的10来输出结果
function test($a,$b=20,$c=30){
echo $a+$b;
}
test(25,20);//这里使$a=20,$b=20
?>
4.可变长度参数列表
PHP提供给我们的,可以直接使用
func_get_args();
//输出传入的参数
func_get_arg();
//输出括号里指定的第n个参数(从0开始)
func_num_args();
//输出传入参数的个数
这三个函数可以使用在我们的自定义函数内部,能够返回给我们一些关于参数的信息
可变函数(变量函数)
直接把函数赋值给变量
可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数
<?php
function test(){
echo '我是test函数!';
}
$a='test';//把函数名字加上引号,赋值给变量即可
$a();//test();
?>