From: http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/09/21/2183157.html

php的的func_num_args、func_get_arg和func_get_args都是返回函数实参相关的函数。

func_num_args:实参个数;

func_get_arg:返回某一个实参,必须事实参数组的索引;

func_get_args:返回实参数组;


<php

function test(){

   echo func_num_args();

   print_r(func_get_args());

   print_r(func_get_arg(1));

}

test(1);

test(1,2);

test(1,2,3);

?>

输出:


Array ( [0] => 1)  2 
Array( [0] => 1 [1] => 2) 
2  3 
Array( [0] => 1 [1] => 2 [2] => 3) 

func_num_args函数功能– 返回传递到函数的参数数目,其语法如下 : int func_num_args (void )

说明 : 返回传递到目前定义函数的参数数目。如果是从函数定义的外面来呼叫此函数,则func_get_arg( )将会产生警告。

func_num_args( )可以用来结合func_get_arg( )func_get_args( )来允许使用者定义的函式接受variable-length参数列表。其中,func_get_arg( )从参数列表返回项目,其语法:int func_get_arg (int arg_num),传回定义函数的参数列表的第arg_num个参数,其参数从0开始。且函数定义的外面来呼叫此函数会产生警告;并且当arg_num大于函数实际传递的参数数目时亦会产生警告并返回FALSE。func_get_args()函数和func_get_arg()函数的区别在于,func_get_args()函数传回一数组,数组的各个元素相当于是目前使用者定义函式的参数列的数目。

在我们构建PHP类的时候,灵活使用这三个函数,可以起到非常理想的效果,例如外面在创建PHP和MYSQL链接的类时,可以书写如下代码:


<?php
class mydb{
    private $user;
    private $pass;
    private $host;
    private $db;     public function __construct(){
    $num_args=func_num_args();
    if($num_args>0){
    $args=func_get_args();
    $this->host=$args[0];
    $this->user=$args[1];
    $this->pass=$args[2];
    this->connect();
    }
}
…………省略…………
?>

<?php

function foo() {

    $numargs = func_num_args();

    echo "Number of arguments: $numargs<br>\n";

    if ($numargs >= 2) {

        echo "Second argument is: " . func_get_arg (1) . "<br>\n";

    }

    $arg_list = func_get_args();

    for ($i = 0; $i < $numargs; $i++) {

        echo "Argument $i is: " . $arg_list[$i] . "<br>\n";

    }

}

foo (1, 2, 3);

?>

func_get_args( )可以用来结合func_num_args( )和func_get_arg( )來允许使用者定义的函式接受variable-length参数列表。

注意 : 此函式是PHP4中新增的函式

php中的func_num_args、func_get_arg与func_get_args函数的更多相关文章

  1. func_get_arg、func_get_args、func_num_args实现PHP伪重载

    今天在看书的时候,发现书上有这么一条:函数重载的替代方法——伪重载 确实,在PHP中没有函数重载这个概念,让很多时候我们无法进行一些处理,甚至有时候不得不在函数后面定义好N个参数在看到了func_ge ...

  2. func_num_args, func_get_arg, func_get-args 的区别与用法

    func_num_args 返回传递给函数的参数个数 <?php header("Content-Type: text/html; charset=UTF-8"); func ...

  3. MATLAB中白噪声的WGN和AWGN函数的使用

    MATLAB中白噪声的WGN和AWGN函数的使用如下: MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一 信号 ...

  4. FastReport调用Delphi中的人民币大写转换自定义函数

    FastReport调用Delphi中的人民币大写转换自定义函数   FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...

  5. Matlab中如何将(自定义)函数作为参数传递给另一个函数

    假如我们编写了一个积分通用程序,想使它更具有通用性,那么可以把被积函数也作为一个参数.在c/c++中,可以使用函数指针来实现上边的功能,在matlab中如何实现呢?使用函数句柄--这时类似于函数指针的 ...

  6. 【SAP BusinessObjects】WEBI中的动态求和,累加函数的使用

    在WEBI中,提供了这样一个函数: RunningSum([字段名]) 其作用是,将[字段名]这一列进行累加动态求和 对于需要进行计算累加值的列就不必写复杂的SQL,直接使用此函数即可解决.

  7. php中base64_decode与base64_encode加密解密函数

    php中base64_decode与base64_encode加密解密函数,实例分析了base64加密解密函数的具体用法,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了php中base64_ ...

  8. Linux 多线程应用中如何编写安全的信号处理函数

    http://blog.163.com/he_junwei/blog/static/1979376462014021105242552/ http://www.ibm.com/developerwor ...

  9. 博文推荐】Javascript中bind、call、apply函数用法

    [博文推荐]Javascript中bind.call.apply函数用法 2015-03-02 09:22 菜鸟浮出水 51CTO博客 字号:T | T 最近一直在用 js 写游戏服务器,我也接触 j ...

随机推荐

  1. Android下基于SDL的位图渲染(一)

    环境准备 安装Android开发环境(java.android-sdk.android ndk.gcc). 我使用的ndk版本是r10b/r10d,在win10/ubutu 15.04编译 下载sdl ...

  2. mysql 通过echo的方式写入数据库 中文乱码解决方案

    echo "set names utf8;insert into xxx (path, sn, time, flag) values ('$wav', '$sn', '$secs', 'op ...

  3. LeetCode: Reverse Nodes in k-Group 解题报告

    Reverse Nodes in k-Group Given a linked list, reverse the nodes of a linked list k at a time and ret ...

  4. HTTP请求与响应报文详解

    如图所示,这是客户端往服务器发送请求时的报文: 一般来说,将报文分成三个部分,请求行.请求头.请求体 如图,请求行包括三部分内容 1.请求方法,在HTTP里的请求方法种类较多,但就移动端开发来说,常用 ...

  5. C#学习笔记(7)——委托

    说明(2017-5-29 22:22:50): 1. 语法:public delegate void mydel();这一句在类外面,命名空间里面. 2. 专门新建一个方法,参数是委托: public ...

  6. resource.h

    resource.h就是.rc文件的头文件.rc文件里的常量全在resource.h定义 .rc文件和resource.h 都是给project add resource 的时候VS 自动生成的.一般 ...

  7. centos 6.4 x86_64 (minimal) 编译安装percona

    下载Percona-Server-5.5.24-26.0 wget https://www.percona.com/downloads/Percona-Server-5.5/Percona-Serve ...

  8. C语言 · 新生舞会

    算法训练 新生舞会   时间限制:1.0s   内存限制:512.0MB      问题描述 新生舞会开始了.n名新生每人有三个属性:姓名.学号.性别.其中,姓名用长度不超过20的仅由大小写字母构成的 ...

  9. 【oneday_onepage】——Microsoft adds a wing, more closets to the homes of SharePoint Online tenants

    To prevent SharePoint Online customers from feeling boxed in, Microsoft wants to improve the way the ...

  10. git设置HTTP代理

    git设置HTTP代理 设置HTTP代理 如果公司使用代理,git就需要设置代理才能克隆远程仓库 执行下面两条语句 git config --global http.proxy 10.167.32.1 ...