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) 
2


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

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://www.cnblogs.com/lxwphp/p/9863862.html

时间: 2024-10-29 05:15:55

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

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

func_num_args 返回传递给函数的参数个数 <?php header("Content-Type: text/html; charset=UTF-8"); function foo() { $numargs = func_num_args(); echo "参数个数为: $numargs\n"; } foo(1, 2, 3); ?> func_get_args 返回一个包含函数参数列表的数组 <?php header("Cont

unity中三种调用其他脚本函数的方法

第一种,被调用脚本函数为static类型,调用时直接用  脚本名.函数名().很不实用-- 第二种,GameObject.Find("脚本所在物体名").SendMessage("函数名");  此种方法可以调用public和private类型函数 第三种,GameObject.Find("脚本所在物体名").GetComponent<脚本名>().函数名();此种方法只可以调用public类型函数 unity中三种调用其他脚本函数的

Scala中的偏函数与部分应用函数

Scala中有PartialFunction的概念, 同时还要一个概念叫Partial Applied Function. 前者译作偏函数, 后者译作"偏应用函数"或"部分应用函数", 一字之差, 差距很大. 首先偏函数是个数学概念, 偏函数不是"函数"的一种, 而是一个跟函数平行的概念. Scala可以通过模式匹配来定义偏函数, 下面这两种方式定义的函数, 都可以认为是偏函数, 因为他们都只对其定义域Int的部分值做了处理. 那么像p1哪有定义

linux 中的进程wait()函数

转载自:http://blog.sina.com.cn/s/blog_7776b9d3010144f9.html 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程, 看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init 来接管他,成为他的父进程-- 一个进程在调用exit

jQuery清除、停止队列中剩下(未执行的函数)

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>jQuery清除.停止队列中剩下(未执行的函数)</title> <script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"> </script> <scrip

jQuery中对AJAX操作的封装函数

jQuery提供了6个简化AJAX操作的函数,每个都可以代替元素AJAX中的四步代码! (1)$('xxx').load()         jQuery对象函数 (2)$.get()                   jQuery全局函数 (3)$.post()                 jQuery全局函数 (4)$.getScript()          jQuery全局函数 (5)$.getJSON()           jQuery全局函数 (6)$.ajax()     

[转载]虚函数在构造函数中,已经失去了虚函数的动态绑定特性

class A { public: A() { Print(); } virtual void Print() { printf("A is constructed.\n"); } }; class B: public A { public: B() { Print(); } virtual void Print() { printf("B is constructed.\n"); } }; int _tmain(int argc, _TCHAR* argv[])

如何让静态库中的可执行程序不调用的函数不链接进该可执行程序?(-ffunction-sections -Wl,--gc-sections)

如何让静态库中的可执行程序不调用的函数不链接进该可执行程序?(-ffunction-sections -Wl,--gc-sections) 关键词: -Wl,--gc-sections   -ffunction-sections  链接  elf   库 有时我们会遇到这种情况,可执行程序需要链接一些静态库,但是静态库中的函数并没有全部使用,只用了其中的几个,但是系统默认会自动把整个静态库全部链接到可执行程序中,造成可执行程序的大小大大增加,浪费了flash空间和内存空间.gcc为我们提供的解决

【转载】3D/2D中的D3DXMatrixPerspectiveFovLH和D3DXMatrixOrthoLH投影函数详解

原文:3D/2D中的D3DXMatrixPerspectiveFovLH和D3DXMatrixOrthoLH投影函数详解 3D中z值会影响屏幕坐标系到世界坐标系之间的转换,2D中Z值不会产生影响(而只是屏幕宽高比会产生影响,z值只对深度剔除产生影响).所以U3D中如果用2D摄像机那么屏幕坐标和世界坐标之间的转换需要用指定的2D摄像机才行,如果用主3D摄像机那么UI转换会产生计算结果异常. 一.D3DXMatrixPerspectiveFovLH函数 作用:Builds a left-handed