设为首页 收藏本站
查看: 553|回复: 0

[经验分享] php中的func_num_args、func_get_arg与func_get_args函数

[复制链接]
累计签到:19 天
连续签到:1 天
发表于 2015-8-27 07:11:55 | 显示全部楼层 |阅读模式
  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);
?>  
  
  输出:
  
  


1
Array ( [0] => 1)
2
Array( [0] => 1 [1] => 2)
2
3
Array( [0] => 1 [1] => 2 [2] => 3)
2   
  
  
DSC0000.gif
  
  
  func_num_args函数功能&#8211; 返回传递到函数的参数数目,其语法如下 : 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();
    }
}
&#8230;&#8230;&#8230;&#8230;省略&#8230;&#8230;&#8230;&#8230;
?>  
  


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

  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-104678-1-1.html 上篇帖子: 在电子商务中用PHP实现SSL加密的业务层实现与根据会员生成数字证书研究 下篇帖子: php党 强烈推荐TIPI:深入理解PHP内核
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表