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环境――Appserv
Dec 13 PHP
php daodb插入、更新与删除数据
Mar 19 PHP
php中几种常见安全设置详解
Apr 06 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
php解析xml方法实例详解
May 12 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
Mar 02 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
php实现websocket实时消息推送
Mar 30 PHP
解决laravel资源加载路径设置的问题
Oct 14 PHP
再谈Yii Framework框架中的事件event原理与应用
Apr 07 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删除数组中特定元素的两种方法
2013/07/02 PHP
php 生成短网址原理及代码
2014/01/23 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
javascript页面动态显示时间变化示例代码
2013/12/18 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
2016/12/19 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
2018/08/23 jQuery
微信小程序下拉菜单效果的实例代码
2019/05/14 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
Python使用re模块验证危险字符
2020/05/21 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
J2EE面试题集锦(附答案)
2013/08/16 面试题
高中生毕业自我鉴定
2013/10/10 职场文书
办公室文员工作自我评价
2013/12/01 职场文书
房产销售经理职责
2013/12/20 职场文书
村级个人对照检查材料
2014/08/22 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
安全责任书范文
2014/08/25 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
HR必备:销售经理聘用合同范本
2019/08/21 职场文书
MySQL RC事务隔离的实现
2022/03/31 MySQL