PHP函数参数

1. 可变参数列表

 // 实现方式1:
    // func_num_args()
    // func_get_arg()
    // func_get_args()
 #例如
 function sum1(){
    $sum = 0;
    $nums = func_num_args();
    if($nums == 0){
        return $sum;
    }else{
        for($i=0;$i<$nums;$i++){
            $sum += func_get_arg($i);
        }   
    }
    echo $sum;
 }

 echo '<br>';
 echo sum1(1,2,3,4,5);
// 实现方式2:
//  function sum(...$nums){
//      ...
//      return $result
//  }
//  echo sum(1,2,3,4)
#例如
function sum2(...$nums){
    $sum = 0;
    foreach($nums as $num){
        $sum += $num; 
    }
    echo $sum;
}

2. 值传递和引用传递

#值传递 是一种单向传递,只能由实参传递给形参,不能由形参传递给实参;在内存中,形参单元与实参单元是不同的单元,在调用函数时,会给形参分配一个存储空间,并将实参对应的值传递给形参,函数调用结束后,形参单元会被释放,实参单元仍然保持并且维持原来的值。因此调用函数时,形参的值如果发生改变,并不会改变调用函数时传递进来的实参的值。
function foo($num){
    $result = 1;
    for($i=1;$i<=$num;$i++){
        $result *= $i; 
    }
    $num = 5; #给形参重新赋值,然后打印查看实参的值任然是3.
    return $result;
}
$num = 3;
echo foo($num);  #6
echo '$num:',$num;  #3

#引用传递
function swap(&$a,&$b){
    $tmp = $a;
    $a = $b;
    $b = $tmp;
}

$a1 = 5;
$b1 = 3;
echo swap($a1,$b1);
echo '$a1:',$a1;  #3
echo '$b1:',$b1;  #5
echo '<br>';

3. 递归函数举例

#递归函数
function recursive($i){
    $num = 1;  #定义一个变量接收结果
    if(1 == $i){
        return 1;
    }else{
        $num = $i * recursive($i-1); 
    }
    return $num;
}
echo recursive(5);
echo "</br>";

4. 闭包和匿名函数

function test_closure($name,closure $clo){
    echo 'Hello,{$name}\n';
    echo "</br>";
    $clo();
}

test_closure("Lily",function(){
    echo "Redirect to VIP welcome page.";
});
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值