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 读取文件乱码问题
Feb 20 PHP
zend framework配置操作数据库实例分析
Dec 06 PHP
php生成二维码的几种方式整理及使用实例
Jun 03 PHP
PHP抓取、分析国内视频网站的视频信息工具类
Apr 02 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
PHP中include/require/include_once/require_once使用心得
Aug 28 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
Feb 07 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
Jul 20 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 PHP
详解关于php的xdebug配置(编辑器vscode)
Jan 29 PHP
Yii框架日志操作图文与实例详解
Sep 09 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
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
作为PHP程序员应该了解MongoDB的五件事
2013/06/03 PHP
php 浮点数比较方法详解
2017/05/05 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
Jquery在指定DIV加载HTML示例代码
2014/02/17 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
JS绘图Flot应用图形绘制异常解决方案
2020/10/16 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
复习Python中的字符串知识点
2015/04/14 Python
python 与GO中操作slice,list的方式实例代码
2017/03/20 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
2017/07/24 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
伦敦一家非常流行的时尚精品店:Oxygen Boutique
2017/01/15 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
业务总经理岗位职责
2014/02/03 职场文书
员工考核评语大全
2014/04/26 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
国际最新研究在陨石中发现DNA主要成分 或由陨石带来地球
2022/04/29 数码科技