1. 可变参数列表
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;
return $result;
}
$num = 3;
echo foo($num);
echo '$num:',$num;
function swap(&$a,&$b){
$tmp = $a;
$a = $b;
$b = $tmp;
}
$a1 = 5;
$b1 = 3;
echo swap($a1,$b1);
echo '$a1:',$a1;
echo '$b1:',$b1;
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.";
});