1、默认参数
默认参数 指在函数定义过程时,提前为函数的形参设置好了默认值,在函数调用但未提供实参时,所采用的赋值方式
实例
<?php //默认参数 指在函数定义过程时,提前为函数的形参设置好了默认值,在函数调用但未提供实参时,所采用的赋值方式 function sum ($a = 20 ,$b = 10){ return $a*$b; } echo sum()."<br>"; //调默认属性输出200 echo sum(1)."<br>";; //第二个变量调默认属性 输出10 echo sum(2,4)."<br>"; //输入两个变量,输出 8 function str($a="同志们,",$b="祝你工作愉快"){ return $a.$b; } echo str().'<br>'; //同志们,祝你工作愉快 echo str("老张,").'<br>';//老张,祝你工作愉快
运行实例 »
点击 "运行实例" 按钮查看在线实例
二、剩余参数
在函数参数设置中使用 ...变量名 方式设置的形参,称之为剩余参数,剩余参数可代表未被直接赋值的所有实参,且所有实参之间以数组的形式存储在一起,
实例
<?php //剩余参数,函数中参数设置中使用 ...变量名 方式设置的形参,称之为剩余参数,剩余参数可代表未被直接设置所有实参,且所有实参之间 //以数组的形式存储在一起, function add ($a,$b,...$c){ return $a+$b+array_sum($c); } echo add(1,2,3,4,5,6,7,8,9,10)."<br>"; //1到10之和 = 55
运行实例 »
点击 "运行实例" 按钮查看在线实例
三、函数的作用域 (超全局变量和常量)
函数中的变量访问 超全局变量 常量 不受作用域限制,
函数中不能直接访问外部全局变量 需要用 global 声明后 才可访问
函数中不能直接访问外部全局变量 但是可以使用超全局变量 $GLOBAL['变量名'] 访问
常量 const 常量一般用大写字母标识 不需要变量符$,访问常量可直接访问
函数内变量的访问,可以通过return返回值的方式访问
return返回值只能由一个数据,但是可以通过返回数组或者对象返回多个数据。
实例
<?php //函数中的变量访问 超全局变量 常量 不受作用域限制 //定义全局变量 $title $title_one ="飞雪连天射白鹿"; function demo1(){ //函数中不能直接访问外部全局变量 需要用 global 声明后 才可访问 global $title_one; return "金庸十四本书的对联:<br>".$title_one."<br>"; } echo demo1(); function demo2(){ //函数中不能直接访问外部全局变量 但是可以使用超全局变量 $GLOBAL['变量名'] 访问 return "金庸十四本书的对联:<br>".$GLOBALS['title_one']."<br>"; } echo demo2(); //定义 常量 const 常量一般用大写字母标识 不需要变量符$ const STR = "www.baidu***"; function demo3(){ //返回常量STR的值 return STR; } echo demo3();
运行实例 »
点击 "运行实例" 按钮查看在线实例
四、匿名函数
即没有定义函数名的函数 即 function(){} 在PHP中也称为闭包函数
匿名函数 不设置函数名 但可以将返回值保存在一个变量中 如 $add=function(){}
实例
<?php //匿名函数,即没有定义函数名的函数 即 function(){} 在PHP中也称为闭包函数 //允许临时创建一个没有指定名称的函数,被用作回调函数参数的值 // 匿名函数 不设置函数名 但可以将返回值保存在一个变量中 如 $add $add =function ($a,$b){ return $a+$b; }; // $add = 值 是赋值语句 所以要以分号结尾 echo $add(5,10)."<br>"; //输出15 //匿名函数作为函数的回调参数使用 $tel = "13800000001"; //全局变量 $a = function(){ //变量赋值匿名函数 返回外部数据 return $tel; //因为没有声明或使用超全局方法调用 本次调用失败 }; $b = function()use($tel){ //匿名函数括号后 使用use(变量名)调用外部变量,函数体内返回成功 return $tel; //调用到内部的变量也拥有修改的权限 }; echo $b(); $c = function()use($tel){ //匿名函数括号后 使用use(变量名)调用外部变量,函数体内返回成功 $tel = "13777777771"; return $tel; //调用到内部的变量也拥有修改的权限 }; echo $c(); //输出 13777777771 函数体内部修改的变量值,对于在外部变量的原值不做产生影响
运行实例 »
点击 "运行实例" 按钮查看在线实例
五、函数调用
函数的调用由传统的方式 和只用函数回调的方式 常用的两个方法 call_user_func( ) 或call_user_func_array()
两种回调的方法,call_user_func_array( )更为常用,可以调用函数 也可以调用系统函数,类方法 类静态方法
需要注意使用时的具体写法。
实例
<?php //函数的调用 function add($a,$b){ return $a+$b; } //常用的函数调用方式 --传统方式 echo add(10,8).'<br>';//输出18 //第二种函数调用方式 --回调方式 调用 call_user_func("函数名",函数参数); //call_user_func(被调用的回调函数,回调函数的参数) 把第一个参数作为回调函数调用 echo call_user_func("add",10,6).'<br>'; //输出16 //第三种函数调用方式 call_user_func_array("函数名","参数数组") //call_user_func_array(被调用的回调函数,参数数组作为参数传入) 调用回调函数,并把一个数组参数作为回调函数的参数 echo call_user_func_array("add",[10,8]).'<br>'; //输出18 //call_user_func_array() 也可以调用系统函数 如 系统函数 print_r print_r([2,4,6,8,10]); echo call_user_func_array("print_r",[[2,4,6,8,10]]).'<br>'; //call_user_func_array() 也可以调用对象 class A { function sum($a,$b){ return $a+$b; } //类中的静态方法 static function mul($a,$b){ return $a * $b; } } // call_user_func_array() 调用对象(类)中的方法 sum echo call_user_func_array([new A,'sum'],[5,8]).'<br>';//输出13 //使用call_user_func_array()调用类中的静态方法 mul 如下 echo call_user_func_array(['A','mul'],[4,6]).'<br>';//输出24
运行实例 »
点击 "运行实例" 按钮查看在线实例