php 函数使用可变数量的参数方法


Posted in PHP onMay 02, 2017

php在用户自定义函数中支持可变数量的参数列表。

在php5.5及更早的版本中,使用func_num_args(), func_get_arg(), func_get_args()函数实现。

<?php

function myfunc(){

  // 获取参数数量
  echo func_num_args().PHP_EOL;

  // 获取第一个参数的值:
  print_r(func_get_arg(0));
  echo PHP_EOL;

  // 获取所有参数的值
  print_r(func_get_args());
  echo PHP_EOL;

}

myfunc('a');
myfunc(1, 2, 3);
myfunc(array('d','e'), array('f'));

?>

输出:

1
a
Array
(
  [0] => a
)

3
1
Array
(
  [0] => 1
  [1] => 2
  [2] => 3
)

2
Array
(
  [0] => d
  [1] => e
)

Array
(
  [0] => Array
    (
      [0] => d
      [1] => e
    )

  [1] => Array
    (
      [0] => f
    )

)

在php5.6及以上的版本中,可以使用…语法实现。

例子1: 使用…$args代替任意数量参数

<?php

function myfunc(...$args){

  // 获取参数数量
  echo count($args).PHP_EOL;

  // 获取第一个参数的值:
  print_r($args[0]);
  echo PHP_EOL;

  // 获取所有参数的值
  print_r($args);
  echo PHP_EOL;

}

myfunc('a');
myfunc(1, 2, 3);
myfunc(array('d','e'), array('f'));

?>

输出结果与php5.5使用func_num_args(), func_get_arg(), func_get_args()函数一致。

例子2: 数组转为参数列表

<?php

function add($a, $b){
  echo $a + $b;
}

$args = array(1, 2);

add(...$args); // 输出3

?>

例子3: 部分参数指定,其他参数数量不定

<?php

function display($name, $tag, ...$args){
  echo 'name:'.$name.PHP_EOL;
  echo 'tag:'.$tag.PHP_EOL;
  echo 'args:'.PHP_EOL;
  print_r($args);
  echo PHP_EOL;
}

display('fdipzone', 'programmer');
display('terry', 'designer', 1, 2);
display('aoao', 'tester', array('a','b'), array('c'), array('d'));

?>

输出:

name:fdipzone
tag:programmer
args:
Array
(
)

name:terry
tag:designer
args:
Array
(
  [0] => 1
  [1] => 2
)

name:aoao
tag:tester
args:
Array
(
  [0] => Array
    (
      [0] => a
      [1] => b
    )

  [1] => Array
    (
      [0] => c
    )

  [2] => Array
    (
      [0] => d
    )

)

以上这篇php 函数使用可变数量的参数方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php.ini中文版
Oct 09 PHP
PHP脚本的10个技巧(2)
Oct 09 PHP
PHP两种去掉数组重复值的方法比较
Jun 19 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
php使用COPY函数更新配置文件的方法
Jun 18 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
Jul 25 PHP
php mysql like 实现多关键词搜索的方法
Oct 29 PHP
PHP 99乘法表的几种实现代码
Oct 13 PHP
php解析非标准json、非规范json的方式实例
Dec 10 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 #PHP
php头像上传预览实例代码
May 02 #PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 #PHP
AJAX的使用方法详解
Apr 29 #PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 #PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 #PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 #PHP
You might like
PHP 多维数组排序实现代码
2009/08/05 PHP
php长字符串定义方法
2012/07/12 PHP
smarty中英文多编码字符截取乱码问题解决方法
2014/10/28 PHP
PHP分页类集锦
2014/11/18 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
Javascript模块模式分析
2008/05/16 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
JS学习之一个简易的日历控件
2010/03/24 Javascript
JavaScript判断表单提交时哪个radio按钮被选中的方法
2015/03/21 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
discuz表情的JS提取方法分析
2017/03/22 Javascript
深入理解Javascript中的作用域链和闭包
2017/04/25 Javascript
详解用JS添加和删除class类名
2019/03/25 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
python os用法总结
2018/06/08 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
python 抓取知乎指定回答下视频的方法
2020/07/09 Python
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
Bally巴利英国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/07 全球购物
Overload和Override的区别
2012/09/02 面试题
计算机相关的自我评价
2014/01/15 职场文书
校运会入场式解说词
2014/02/10 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
2019各种保证书范文
2019/06/24 职场文书
python中filter,map,reduce的作用
2022/06/10 Python