php中的func_num_args、func_get_arg与func_get_args函数

php中的func_num_args、func_get_arg与func_get_args函数

https://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) 


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


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中新增的函式

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112752.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu18.04安装GCC8.3.0

    Ubuntu18.04安装GCC8.3.0转自:https://blog.csdn.net/bjzhaoxiao/article/details/102525241Ubuntu系统是自带GCC安装指令的aptinstallgcc,当前apt源中gcc版本为5.4.0,版本太低,推荐手动安装gcc8.3.0手动安装gcc8.3.0之前需要先确保安装gcc环境依赖GMP4.2+、MPFR2.3.1+、MPC0.8.0+,否则会报出以下错误configure:error:BuildingGCCrequiresGMP4.

    2022年7月24日
    3
  • VMware虚拟机ubuntu显示屏幕太小解决办法

    VMware虚拟机ubuntu显示屏幕太小解决办法使用VMware安装的ubuntu虚拟机的显示屏幕太小,可以通过在VMware里安装“VMwareTool”插件解决,安装步骤记录一下。1.更改ISO文件路径安装VMwareTool需要用到虚拟光驱,加载一个ISO文件,在安装的时候加载的是ubuntu安装文件“ubuntu-16.04.2-desktop-amd64.iso”,如果不更改这个加载路径,相当于在虚拟机

    2022年6月7日
    52
  • xshell下载安装教程_xshell命令连接ip

    xshell下载安装教程_xshell命令连接ipxshell下载链接:  http://www.netsarang.com/download/free_license.html         现今软件市场上有很多终端工具,比如:secureCRT、Putty、telnet、xshell\等等。secureCRT是一款很强大的终端工具,但是,它毕竟是收费软件,在公司里不允许使用。而且在自己的电脑里一旦输入大写,整个界面就乱了(原因未知,未…

    2022年9月10日
    0
  • 一般运维架构图「建议收藏」

    一般运维架构图「建议收藏」架构图:整体架构如架构图所示,client端请求通过域名解析访问到服务端负载均衡器slb或者nginx(静态内容存储在阿里云oss并通过cnd加速访问),然后经过安全组过滤,请求最终到达server端,经过业务处理并在阿里云数据库RDS读写数据后返回客户端…

    2022年7月17日
    32
  • C++ Qt常用面试题整理(不定时更新)[通俗易懂]

    C++ Qt常用面试题整理(不定时更新)[通俗易懂]1.Qt多线程同步的几种实现方式(1)互斥量:QMutexQMutex类提供的是线程之间的访问顺序化。QMutex的目的是保护一个对象/数据结构或者代码段在同一时间只有一个线程可以访问。基本使用方法如下:QMutexmutex;intvar;voidfunction(){mutex.lock();//访问varvar*var;mutex.unlock();}如果使用mutex加锁,却没有使用unlock解锁,那么就会造成..

    2022年6月25日
    41
  • mapState与mapGetters语法糖

    mapState与mapGetters语法糖vuex中的mapState,mapGetters属于辅助函数,其实就是vuex的一个语法糖,使代码更简洁更优雅。<script>import{mapState,mapGetters}from”vuex”exportdefault{computed:{ //原先templateInfo(){ returnthis.$store.state.templateInfo},//现在

    2022年5月17日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号