博客列表 >PHP函数--计算不定参数的乘积--2019年09月28日

PHP函数--计算不定参数的乘积--2019年09月28日

Victor的博客
Victor的博客原创
2019年10月06日 20:13:34978浏览

作业:

练习使用剩余参数,实现不定参数的乘积

【1】PHP自定义函数

可以通过自定义函数的方法来实现特定的功能,通过函数可以实现代码复用和结构化编程。

通常,函数的声明格式为:function 函数名称(函数形参){    函数体    }

函数通过被调用来执行:函数名(实参);

【2】可变个数参数的函数

PHP 在自定义函数中支持可变数量的参数列表,仅适用于实参数量很多数量不确定的场景。

如果希望在函数中接受任意数量的参数,则需要在函数中使用PHP系统函数:func_get_args(),它可以把传入的所有实参当作一个数组返回;

PHP5.6以后,在声明函数形参时可以使用“...”运算符,从而实现变长参数函数。

【3】一个实现不定参数乘积的实例:

实例
<?php 
	function muti_product($a, $b, ...$c) {
		return $a * $b * array_product($c);
	}

	echo muti_product(1, 2, 6, 3, 4, 5);

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

上例中:$a=1,$b=2,则剩余的所有参数全部作为数组赋值给$c,

【4】总结:

经过自己折腾后发现:这种函数在实际应用中需谨慎使用,搞不好就给自己挖了坑。

  • PHP默认是弱类型模式,传入的实参可以是任意类型数据,意外的强制转换可能会产生不可预见的结果;如果感觉输入不可控,可以设置为严格模式+错误处理的函数来实现。

  • 自由度太高,一定要确保输入的格式可以产生正确的结果。
    比如:这样输入参数echo muti_product(1, 2, [6, 3, 4, 5]);   会计算出错误的结果:2    
    可以这样输入:echo muti_product(1, 2, ...[6, 3, 4, 5]);
    也可以使用一个数组变量$x = [6,3,4,5];echo muti_product(1, 2, ...$x);
    甚至这种输入也可以获得正确的结果:echo muti_product(1, 2, 6, ...[3, 4, 5]); 

  • ...运算符的作用:简化了对传入参数的处理,它把所有 / 或者是剩余(有声明对应关系 或者 未声明对应关系)的数据全部放入一个实际的数组中,从而方便处理。所以当一个函数参数比较多时,可以不用逐一传递,只需传递一个数组,数组中的成员就展开为函数的参数了。



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议