Blogger Information
Blog 35
fans 0
comment 0
visits 44324
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP函数--计算不定参数的乘积--2019年09月28日
Victor的博客
Original
987 people have browsed it

作业:

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

【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]); 

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



Correction status:qualified

Teacher's comments:作业写得完整, 总结也到位
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post