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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
自动生成文章摘要的代码[PHP 版本]
Mar 20 PHP
php strstr查找字符串中是否包含某些字符的查找函数
Jun 03 PHP
PHP设计模式 注册表模式
Feb 05 PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
PHP实现AES256加密算法实例
Sep 22 PHP
两种php去除二维数组的重复项方法
Nov 04 PHP
PHP图形操作之Jpgraph学习笔记
Dec 25 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
Laravel ORM 数据model操作教程
Oct 21 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
PHP curl 并发最佳实践代码分享
2012/09/05 PHP
浅谈PHP中的数据传输CURL
2016/09/06 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
php框架知识点的整理和补充
2021/03/01 PHP
js操作输入框提示信息且响应鼠标事件
2014/03/25 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
AngularJS  ng-table插件设置排序
2016/09/21 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
2016/11/01 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
原生js+css实现tab切换功能
2020/09/17 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python中使用SAX解析xml实例
2014/11/21 Python
Python中的作用域规则详解
2015/01/30 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
Django项目实战之用户头像上传与访问的示例
2018/04/21 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Python中的枚举类型示例介绍
2019/01/09 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
会计出纳岗位职责
2013/12/25 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
尼克胡哲观后感
2015/06/08 职场文书
Python的三个重要函数详解
2022/01/18 Python
《帝国时代4》赛季预告 新增内容编译器可创造地图
2022/04/03 其他游戏