PHP学习——14 PHP函数(函数的定义、函数的参数、可变函数与回调实现)

一、函数的定义

<?php
// 函数的创建包含4个部分:
// 1.关键字function;
// 2.符合标识符规则的函数名;
// 3.符合变量定义规则的形式参数;
// 4.一对花括号包裹的函数体
function 函数名($arg_1, $arg_2, /* ..., */ $arg_n){
  // 函数体
}
// 函数必须调用才能看到函数的执行效果,按函数名调用参数
 ?>

二、函数的参数

函数的参数:值参数,引用参数,默认参数,可变参数

<?php 
$num = 20;  // 全局变量
// 1.值参数
function add1($num){ // 值参数相当于将全局变量的值复制给函数的形参,全局变量不会被add1改变
	return $num += 1;
}
echo '全局变量$num:'.$num.'<br>';
echo 'add1的值:'.add1($num).'<br>';
echo '全局变量$num:'.$num.'<br>';
echo '<hr>';
// 2.引用参数
function add2(&$num){ // 引用参数相当于将全局变量的引用地址复制给函数的形参,全局变量会被add2改变
	echo '<hr>'.$num.'<hr>'; // 20
	return $num += 2;
}
echo '全局变量$num:'.$num.'<br>';
echo 'add2的值:'.add2($num).'<br>';
echo '全局变量$num:'.$num.'<br>';
// 3.默认参数:适用于实参数量小于形参,多出来的形参必须设置默认值,默认值的设置使用:形参=默认值,...,形参=默认值
function demo($n=1,$m=2,$k=3){
	return $n+$m+$k;
}
echo '<hr>';
echo demo().'<br>'; // 6
echo demo(2,3).'<br>'; // 8
echo demo(20,30).'<br>'; // 53
// 4.可变参数:函数可以接受任意数量的参数,适合于实际参数大于形式参数
//   func_get_args():用在函数体内,将函数当前的参数打包到一个数组内返回
function demo2(){
	echo '<pre>';
	print_r(func_get_args()); // 获取参数列表转为数组返回
	echo '</pre>';
	echo func_get_arg(2);
}
demo2('html','css','javascript','php');
// 在php中还有很多可变参数的函数:array()
echo '<pre>';
print_r(array(1,2,3,4,5));
echo '</pre>';
 ?>

三、可变函数与回调实现

mixed call_user_func_array ( callable $callback , array $param_arr )
把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。

<?php 
// 1.可变函数(变量函数):函数名称来自另一个变量
function add($n,$m){
	return '$n+$m= '.($n+$m);
}
function sub($n,$m){
	return '$n-$m= '.($n-$m);
}
function mult($n,$m){
	return '$n*$m= '.($n*$m);
}
function div($n,$m){
	return '$n/$m= '.($n/$m);
}
echo '可变函数的用法:<br>';
$funcName = 'add';
echo $funcName(10,5); // add(10,5)
echo '<hr>';
$funcName = 'sub';
echo $funcName(10,5); // sub(10,5)
echo '<hr>';
$funcName = 'mult';
echo $funcName(10,5); // mult(10,5)
echo '<hr>';
$funcName = 'div';
echo $funcName(10,5); // div(10,5)
echo '<hr>';
// 用 call_user_func_array(被调用的回调函数, 参数列表数组)来调用可变函数
echo call_user_func_array($funcName,[15,3]);
echo '<hr>';
// 2.回调函数
function arithmetic($callback,$a,$b){
	return call_user_func_array($callback,[$a,$b]);
}
echo arithmetic('add',10,5); // $n+$m= 15
echo '<hr>';
echo arithmetic('sub',10,5); // $n-$m= 5
echo '<hr>';
echo arithmetic('mult',10,5); // $n*$m= 50
echo '<hr>';
echo arithmetic('div',10,5); // $n/$m= 2
echo '<hr>';
?>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值