参数
- 调用者可以通过参数将数据传递到函数中
- 参数是以逗号分隔的表达式列表
- 参数按照从左到右的顺序求值
参数类型
序号 |
类型 |
描述 |
1 |
值参数 |
默认传参方式 |
2 |
引用参数 |
改变原始调用参数值 |
3 |
默认参数 |
调用时允许省略的参数 |
4 |
剩余参数 |
调用参数数量不确定 |
// 值参数
function demo(float $arr):float
{
return $arr*=2;
}
$de = 100;
echo $de.'<br>';
echo demo($de);
echo '<hr>';
// 引用参数
//如果在参数前面是用了取地址符,则会改变原始调用参数的值
//
function demo1(float &$arr):float
{
return $arr*=2;
}
$de = 100;
echo demo1($de).'<br>';
echo $de.'<br>';
echo '<hr>';
//默认参数
// 默认参数一定不能写在必选参数前面,必须写在后面
function demo2(float $a , float $b ,string $opt = '+'):string
{
$res = 0 ;
switch ($opt) {
case '+':
$res = "$a + $b = ".($a+$b);
break;
case '-':
$res = "$a - $b = ".($a-$b);
break;
case '*':
$res = "$a * $b = ".($a*$b);
break;
case '/':
$res = "$a / $b = ".($a/$b);
break;
default:
$res ='类型不对';
}
return $res;
}
echo demo2(2,3,'+');
echo '<hr>';
// 剩余参数
// func_num_args() 参数数量
// func_get_arg() 根据索引返回指定的调用参数
//func_get_args() 返回为数组
function demo3()
{
$total = 0 ;
for ($i=0; $i <func_num_args(); $i++) {
$total += func_get_arg($i);
}
return $total;
}
echo demo3(1,2,1,2,12,12,12,1,21,2,12,5);
echo '<hr>';
//还有一种方法 foreach
function demo4()
{
$total = 0;
foreach (func_get_args() as $value) {
$total += $value;
}
return $total;
}
echo demo4(1,12,13,35,231,2,12,5,12,1,1);
echo '<hr>';
// 还可以用剩余参数来做
// ... 参数归纳符 参数展开
// array_sum() 数组求和
// array_product() 数组求积
function demo5(...$args)
{
// 求和
// return array_sum($args);
// 求积
return array_product($args);
}
echo demo5(32,32,23,32,4,65,5,1635,13543,4,53,53,53,5);
// 我们还可以将这些值保存到一个数组中
$adv = [32,32,23,32,4,65,5,1635,13543,4,53,53,53,5];
// 访问的时候将其展开
echo demo5(...$adv);
// ... 用在函数的形式参数列表中表示归纳
// 用在函数的调用参数列表中表示展开
// 课外扩展解包
$user[] = [100,150,'多多'];
$user[] = [150,160,'小明'];
$user[] = [120,160,'小红'];
$user[] = [106,170,'小兰'];
$user[] = [130,120,'小路'];
$user[] = [180,190,'小老'];
foreach ($user as list($tizhong,$shengao,$name)) {
printf('体重=%s,身高=%s,姓名=%s <br>',$tizhong,$shengao,$name);
}
// 输出
// 体重=100,身高=150,姓名=多多
// 体重=150,身高=160,姓名=小明
// 体重=120,身高=160,姓名=小红
// 体重=106,身高=170,姓名=小兰
// 体重=130,身高=120,姓名=小路
// 体重=180,身高=190,姓名=小老