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.MVC的模板标签系统(三)
Sep 05 PHP
PHP数据缓存技术
Feb 14 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
PHP如何抛出异常处理错误
Mar 02 PHP
PHP源代码数组统计count分析
Aug 02 PHP
基于Linux调试工具strace与gdb的常用命令总结
Jun 03 PHP
PHP array_multisort() 函数的深入解析
Jun 20 PHP
PHP5多态性与动态绑定介绍
Apr 03 PHP
详解php框架Yaf路由重写
Jun 20 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
PHP中抽象类,接口功能、定义方法示例
Feb 26 PHP
PHP中->和=>的意思
Mar 31 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
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
node.js+jQuery实现用户登录注册AJAX交互
2017/04/28 jQuery
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
vue+animation实现翻页动画
2020/06/29 Javascript
JS hasOwnProperty()方法检测一个属性是否是对象的自有属性的方法
2021/01/29 Javascript
Python3.x和Python2.x的区别介绍
2013/02/12 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
Python新手学习raise用法
2020/06/03 Python
Pycharm Git 设置方法
2020/09/15 Python
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
医学检验专业个人求职信范文
2013/12/04 职场文书
四年的大学生生活自我评价
2013/12/09 职场文书
kfc实习自我鉴定
2013/12/14 职场文书
小孩百日宴答谢词
2014/01/15 职场文书
中学生民族团结演讲稿
2014/08/27 职场文书
万能检讨书2000字
2014/10/17 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
教师年度考核自我评鉴
2015/08/11 职场文书
话题作文之财富(600字)
2019/12/03 职场文书