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+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
PHP面向对象程序设计之类常量用法实例
Aug 20 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
php静态文件返回304技巧分享
Jan 06 PHP
PHP输出一个等腰三角形的方法
May 12 PHP
两种php给图片加水印的实现代码
Apr 18 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
thinkPHP分页功能实例详解
May 05 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
php伪静态验证码不显示的解决方案
Sep 26 PHP
使用laravel根据用户类型来显示或隐藏字段
Oct 17 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 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回溯法解决0-1背包问题实例分析
2015/03/23 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
JQuery+Ajax无刷新分页的实例代码
2014/02/08 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
Javascript实现苹果悬浮虚拟按钮
2016/04/10 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
Python的Flask框架中实现登录用户的个人资料和头像的教程
2015/04/20 Python
Python中 Lambda表达式全面解析
2016/11/28 Python
Python获取文件所在目录和文件名的方法
2017/01/12 Python
pytorch构建多模型实例
2020/01/15 Python
python网络编程之五子棋游戏
2020/05/14 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
Roots加拿大官网:加拿大休闲服饰品牌
2016/10/24 全球购物
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
灵泰克Java笔试题
2016/01/09 面试题
文秘自荐信
2013/10/20 职场文书
社区文化建设方案
2014/05/02 职场文书
用电申请报告范文
2015/05/18 职场文书
国博复兴之路观后感
2015/06/02 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
python区块链持久化和命令行接口实现简版
2022/05/25 Python