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
) )
可变参...总结:
1,函数定义时的参数使用...$params,那么$params会是一个数组;
2,函数执行时使用 ...$params ,$param(数组格式)会把$param依次解析为函数的参数
php的参数函数与可变参的更多相关文章
- C语言中可变参数函数实现原理
C函数调用的栈结构 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈.例如,对于函数: void fu ...
- C可变参数函数 实现
转自:http://blog.csdn.net/weiwangchao_/article/details/4857567 C函数要在程序中用到以下这些宏: void va_start( va_list ...
- C语言可变参数函数实现原理
一.可变参数函数实现原理 C函数调用的栈结构: 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈. 本 ...
- c可变参数函数
C函数要在程序中用到以下这些宏: <pre lang="c" escaped="true">void va_start( va_list arg_p ...
- C和C指针小记(十二)-函数的可变参数表
1.可变参数表是通过宏实现的 宏定义于stdarg.h头文件,它是标准库的一部分.这个头文件声明了一个类型var_list和三个宏--va_start.va_arg.va_end. 我们可以声明一个类 ...
- C语言中的可变参数函数
C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个参数format固定以外 ...
- ios开发-Object-C可变参数函数
简介 一个可变参数函数是指一个函数拥有不定的参数,即为一个函数可接收多个参数.有时我们会遇到一些算术问题需要用到,比如是计算传入参数的总和,字符串的连接或是其它操作过程,我们在 OC 里也经常使用,最 ...
- C语言学习020:可变参数函数
顾名思义,可变参数函数就是参数数量可变的函数,即函数的参数数量是不确定的,比如方法getnumbertotal()我们即可以传递一个参数,也可以传递5个.6个参数 #include <stdio ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
随机推荐
- SaxReader读取xml
package com.java1234.action; import java.io.File; import java.util.List; import org.dom4j.Document; ...
- final关键字总结
参考文章[https://www.cnblogs.com/xrq730/p/4820296.html] 前言:在Java中final作为最常见的一个关键字,平常用到的地方也很多,接下来就来看看什么是f ...
- VUE浏览器储存封装
import {isFunction, extend} from 'lodash' const _originStorage = function () { var pluses = /\+/g fu ...
- python如何安装pip及venv管理
问题1:如何安装pip python的虚拟环境virtualenv的管理 背景: (1)python的版本很多,每个应用项目可能需要使用不同的版本,这样会导致兼容性问题: python的插件相当的丰富 ...
- supervisor进程管理的使用
介绍 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启.它是通过fork/exec的方式把这些被管理 ...
- 在Ubuntu上使用离线方式快速安装K8S v1.11.1
在Ubuntu上使用离线方式快速安装K8S v1.11.1 0.安装包文件下载 https://pan.baidu.com/s/1nmC94Uh-lIl0slLFeA1-qw v1.11.1 文件大小 ...
- C++ Under the Hood
The original article is taken from http://msdn.microsoft.com/archive/en-us/dnarvc/html/jangrayhood.a ...
- 深入理解JVM(3)——类加载机制
1.类加载时机 类的整个生命周期包括了:加载( Loading ).验证( Verification ).准备( Preparation ).解析( Resolution ).初始化( Initial ...
- 整体二分(SP3946 K-th Number ZOJ 2112 Dynamic Rankings)
SP3946 K-th Number (/2和>>1不一样!!) #include <algorithm> #include <bitset> #include & ...
- Dubbo2.6.5+Nacos注册中心(代替Zookeeper)
在上一节的小栗子的基础上,只需要更改两个地方 第一个:父工程的pom依赖增加 <!-- Dubbo Nacos registry dependency --> <dependency ...