设为首页收藏本站

就爱编程论坛

 找回密码
 注册

人人连接登陆

无需注册,直接登录

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 280|回复: 0
打印 上一主题 下一主题

call_user_func函数和call_user_func_array函数 [复制链接]

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    无聊
    2025-5-27 03:37:20
  • 签到天数: 366 天

    [LV.9]以坛为家II

    论坛先锋 学习至圣 荣誉成员 论坛元老 活跃之星 终极领袖

    我玩的应用:

    跳转到指定楼层
    楼主
    发表于 2012-3-29 00:08:58 |只看该作者 |倒序浏览
    1.call_user_func函数是当需要动态调用函数时,才使用的,这个函数有两种用法:
    第一种是调用孤独的函数:
    <!--?
    function funa($b,$c)
    {
    echo $b;
    echo $c;
    }
    call_user_func('funa', "111","222");
    call_user_func('funa', "333","444");
    //显示 111 222 333 444
    //大家有没有发现,这个用法有点像javascript中的call方法,嘿嘿
    ?-->
    第二种是调用类内部的函数:


    <!--?
    class a {
    function b()
    {
    $args = func_get_args();
    $num = func_num_args();
    print_r($args);
    echo $num;
    }
    }
    call_user_func(array("a", "b"),"111","222");
    ?-->
    上面这个例子,自己运行一下看看结果是什么吧~嘿嘿~提示一下func_get_args()函数是获取传入到函数中的参数,返回一个数组,func_num_args()函数获取传入函数中的参数的个数。

    2.call_user_func_array函数
    这个函数也是当需要动态调用函数时用到的,它的用法和call_user_func函数比较像,只是参数传入的是数组。

    <!--?
    function a($b, $c)
    {
    echo $b;
    echo $c;
    
    }
    call_user_func_array('a', array("111", "222"));
    //显示 111 222
    ?-->
    <!--?
    Class ClassA
    {
    
    function bc($b, $c) {
    $bc = $b + $c;
    echo $bc;
    }
    }
    call_user_func_array(array('ClassA','bc'), array("111", "222"));
    //显示 333
    ?-->
    <!--?
    function otest1 ($a)
    {
    echo( '一个参数' );
    }
    
    function otest2 ( $a, $b)
    {
    echo( '二个参数' );
    }
    
    function otest3 ( $a ,$b,$c)
    {
    echo( '三个啦' );
    }
    
    function otest (){
    $args = func_get_args();
    $num = func_num_args();
    call_user_func_array( 'otest'.$num, $args );
    }
    otest("11");
    otest("11","22");
    otest("11","22","33");
    ?-->

    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    分享分享0 收藏收藏0 支持支持0 反对反对0 分享到人人 转发到微博
    [img=http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=fRUcHhYWGAQ9GxIFEBwUEVMeEhA]http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_mailme_02.png[/img]

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    晴云孤魂's Blog|就爱编程搜帖|手机版|Archiver|就爱编程论坛     

    GMT+8, 2025-7-2 08:47 , Processed in 0.098349 second(s), 30 queries .

    Powered by Discuz! X2

    © 2001-2011 Comsenz Inc.

    回顶部