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与javascript对多项选择的处理
Oct 09 PHP
Mysql的GROUP_CONCAT()函数使用方法
Mar 28 PHP
php过滤危险html代码
Aug 18 PHP
php pack与unpack 摸板字符字符含义
Oct 29 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
Feb 16 PHP
php的ZipArchive类用法实例
Oct 20 PHP
php实现压缩多个CSS与JS文件的方法
Nov 11 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 PHP
php微信开发之音乐回复功能
Jun 14 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 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数组一对一替换实现代码
2012/08/31 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
javascript函数命名的三种方式及区别介绍
2016/03/22 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
vue实现动态数据绑定
2017/04/28 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
JavaScript运动原理基础知识详解
2020/04/02 Javascript
vue使用Sass时报错问题的解决方法
2020/10/14 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
python实现音乐下载器
2018/04/15 Python
解决pyttsx3无法封装的问题
2018/12/24 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
python实现京东订单推送到测试环境,提供便利操作示例
2019/08/09 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
单位消防安全制度
2014/01/12 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
《伯牙绝弦》教学反思
2016/02/16 职场文书
python状态机transitions库详解
2021/06/02 Python