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 相关文章推荐
一个好用的分页函数
Nov 16 PHP
mysql+php分页类(已测)
Mar 31 PHP
php date()日期时间函数详解
May 16 PHP
php输出表格的实现代码(修正版)
Dec 29 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
php 目录与文件处理-郑阿奇(续)
Jul 04 PHP
基于PHP array数组的教程详解
Jun 05 PHP
深入理解php的MySQL连接类
Jun 07 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
php使用自带dom扩展进行元素匹配的原理解析
May 29 PHP
解析laravel使用workerman用户交互、服务器交互
Apr 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简单开启curl的方法(测试可行)
2016/01/11 PHP
php is_executable判断给定文件名是否可执行实例
2016/09/26 PHP
起点页面传值js,有空研究学习下
2010/01/25 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
浅谈js中的闭包
2015/03/16 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
详解iview的checkbox多选框全选时校验问题
2019/06/10 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
Python中for循环和while循环的基本使用方法
2015/08/21 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
浅析python连接数据库的重要事项
2021/02/22 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
Gap英国官网:Gap UK
2018/07/18 全球购物
Ajax的工作原理
2015/12/04 面试题
广告创意求职信
2014/03/17 职场文书
2015年司机工作总结
2015/04/23 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
五年级作文之劳动作文
2019/11/12 职场文书
Sql-Server数据库单表查询 4.3实验课
2021/04/05 SQL Server