可变数量的参数列表

PHP 在用户自定义函数中支持可变数量的参数列表。在 PHP 5.6 及以上的版本中,由 ... 语法实现;在 PHP 5.5 及更早版本中,使用函数func_num_args()func_get_arg(),和 func_get_args() 。

... in PHP 5.6+

在初学时,总是为方法的参数个数而困惑。

今天给大家总结一下,简单归类发出来,希望能帮助到大家。

案列一:

在PHP 5.6以后,参数列表可以包括…,他表示函数接受可变数量的参数。参数将作为数组传递到给定的变量中,例如:

<?php
function sum(...$numbers) {
$acc = 0;
foreach ($numbers as $n) {
$acc += $n;
}
return $acc;
} echo sum(1, 2, 3, 4);
?>

以上程序的输出结果会是什么。

案例二:

你也可以用…调用函数时,将数组或可遍历变量或文字拆装到参数列表中:列如

<?php
function add($a, $b) {
return $a + $b;
} echo add(...[1, 2])."\n"; $a = [1, 2];
echo add(...$a); $a = [1, 2,3,4];
echo add(...$a);
?>

以上程序的输出结果会是什么

案列三:

您可以在…之前指定正常位置参数。在这种情况下,只有与位置参数不匹配的尾随参数将被添加到由…生成的数组中。

还可以在…之前添加类型提示。如果存在,那么由……捕获的所有参数必须是提示类的对象。

<?php
function total_intervals($unit, DateInterval ...$intervals) {
$time = 0;
foreach ($intervals as $interval) {
$time += $interval->$unit;
}
return $time;
} $a = new DateInterval('P1D');
$b = new DateInterval('P2D');
echo total_intervals('d', $a, $b).' days'; // This will fail, since null isn't a DateInterval object.
echo total_intervals('d', null);
?>

以上程序输出的结果是

3 days
Catchable fatal error: Argument 2 passed to total_intervals() must be an instance of DateInterval, null given, called in - on line 14 and defined in - on line 2

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

PHP的基础知识详解

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

最新文章

  1. expect基本使用方法
  2. 转行|如何成为企业想要的Android工程师
  3. hibernate(1) —— 入门
  4. 浏览器控制台console
  5. 判断App是否在后台运行
  6. CSS3实现背景颜色渐变
  7. 微信lbs---返回两个经纬度坐标点的距离
  8. IOS时间格式转换
  9. Castle ActiveRecord简单介绍
  10. css3动画属性中的transition属性
  11. 图解iPhone开发新手教程
  12. 为ubuntu只带的network-manager添加latp/ipsec VPN
  13. char*,const char*和string的相互转换
  14. 桌面浏览器实现滑动翻页效果(Swiper)
  15. [转]Android推送方案分析(MQTT/XMPP/GCM)
  16. [一个经典的多线程同步问题]解决方案二:Event事件
  17. 浅析Java源码之LinkedList
  18. PHP过滤指定字符串,过滤危险字符
  19. 2DSprite添加Light照射(Unity3D开发之十六)
  20. js 取整 取余

热门文章

  1. protobuff java 包编译(Windows)
  2. java代码关于匿名内部类和接口的方法使用
  3. java代码确认出ip和主机名
  4. Struts2接受页面传值过程中出现input的问题
  5. Linux性能监测:磁盘IO篇
  6. CAD库中统计PBN运行航路条数和总距离
  7. 科学家开发新AI系统,可读取大脑信息并表达复杂思想
  8. [原创]JMeter初次使用总结
  9. IDE 文件查找快捷键被占
  10. BurpSuite—-decoder模块(编码模块)