Blogger Information
Blog 32
fans 0
comment 0
visits 22500
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
07-30 作业:函数默认参数,剩余参数,匿名函数及call_user_func_array()方法...
Yx的博客
Original
687 people have browsed it

在PHP中,支持函数的默认方式调用,即为参数指定一个默认值。


1.默认参数实例:

<?php
 //自定义一个函数mun
 function mun($a=1, $b=2, $c=3){
   echo $a + $b;
 }
 mun();               //全部使用默认参数相加
 echo "<hr>";
 mun(8);            //第一个默认参数被覆盖,后面两个参数为默认
 echo "<hr>";
 mun(8,5);          //前两个默认参数被覆盖,后面一个参数为默认
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

2.剩余函数实例:

<?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

运行实例 »

点击 "运行实例" 按钮查看在线实例

 

3.匿名函数实例:

<?php
//匿名函数,即没有定义函数名的函数 即 function(){} 在PHP中也称为闭包函数
//允许临时创建一个没有指定名称的函数,被用作回调函数参数的值

// 匿名函数 不设置函数名 但可以将返回值保存在一个变量中 如 $add
$add =function ($a,$b){
    return $a+$b;
}; // $add = 值  是赋值语句 所以要以分号结尾

echo $add(9,11)."<br>"; //输出20
echo "<hr>";
//匿名函数作为函数的回调参数使用

$tel = "13015600265"; //全局变量
$a = function(){      //变量赋值匿名函数 返回外部数据
    return $tel;      //因为没有声明或使用超全局方法调用 本次调用失败
};

$b = function()use($tel){  //匿名函数括号后 使用use(变量名)调用外部变量,函数体内返回成功
    return $tel;           //调用到内部的变量也拥有修改的权限
};
echo $b();
echo "<hr>";
$c = function()use($tel){  //匿名函数括号后 使用use(变量名)调用外部变量,函数体内返回成功
    $tel = "13005972323";
    return $tel;           //调用到内部的变量也拥有修改的权限
};
echo $c();  //输出 13005972323 函数体内部修改的变量值,对于在外部变量的原值不做产生影响

运行实例 »

点击 "运行实例" 按钮查看在线实例

 

call_user_func_array()使用:

使用方法简单来讲,就是调用一个函数或者一个类中的某个成员函数

. 场景:

a、你要调用的函数名是未知的
b、要调用函数的参数类型及个数也是未知的,而且第二个参数传入的是数组,我不知道这样理解对不对?老师

 <?php
function a($b,$c){   //第一个参数是函数名,第二个参数是参数数组
echo $b;
echo $c;
}
call_user_func_array('a',array("111","222"));
//返回是111,222
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

 

Correction status:qualified

Teacher's comments:函数中不要用echo
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post