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点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号