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 相关文章推荐
ueditor 1.2.6 使用方法说明
Jul 24 PHP
PHP静态文件生成类实例
Nov 29 PHP
ThinkPHP添加更新标签的方法
Dec 05 PHP
PHP实现根据时间戳获取周几的方法
Feb 26 PHP
抛弃 PHP 代价太高
Apr 26 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
PHP验证码无法显示的原因及解决办法
Aug 11 PHP
PHP实现转盘抽奖算法分享
Apr 15 PHP
PHP实现的微信公众号扫码模拟登录功能示例
May 30 PHP
laravel 实现上传图片到本地和前台访问示例
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编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
Python 除法小技巧
2008/09/06 Python
python 禁止函数修改列表的实现方法
2017/08/03 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
小加工厂管理制度
2014/01/21 职场文书
公司端午节活动方案
2014/02/04 职场文书
物业总经理岗位职责
2014/02/28 职场文书
护理专科学生自荐书
2014/07/05 职场文书
个人汇报材料范文
2014/12/30 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
亮剑观后感600字
2015/06/05 职场文书
好人好事新闻稿
2015/07/17 职场文书
小学体育组工作总结2015
2015/07/21 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python