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 相关文章推荐
基于mysql的论坛(5)
Oct 09 PHP
比file_get_contents稳定的curl_get_contents分享
Jan 11 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
php fread读取文件注意事项
Sep 24 PHP
基于php判断客户端类型
Oct 14 PHP
PHP中phar包的使用教程
Jun 14 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
PHP数组去重的更快实现方式分析
May 09 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 PHP
php的RSA加密解密算法原理与用法分析
Jan 23 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/ZendEngine2的改进
2006/10/09 PHP
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】
2017/04/18 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
如果文字过长,则将过长的部分变成省略号显示
2006/06/26 Javascript
javascript中方便增删改cookie的一个类
2012/10/11 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
Node.js Buffer用法解读
2018/05/18 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
2019/09/24 Javascript
JS操作json对象key、value的常用方法分析
2019/10/29 Javascript
JS实现星星海特效
2019/12/24 Javascript
基于element-ui封装表单金额输入框的方法示例
2021/01/06 Javascript
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
python导入坐标点的具体操作
2019/05/10 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
pytorch中tensor张量数据类型的转化方式
2019/12/31 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
pyecharts在数据可视化中的应用详解
2020/06/08 Python
python实现取余操作的简单实例
2020/08/16 Python
在pycharm创建scrapy项目的实现步骤
2020/12/01 Python
Noon埃及:埃及在线购物
2019/11/26 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
药剂学专业应届生自荐信
2013/09/29 职场文书
会计毕业生自我鉴定
2013/11/04 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
会计求职自荐信范文
2015/03/04 职场文书
就业意向书范本
2015/05/11 职场文书
百年校庆感言
2015/08/01 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python