PHP 函数call_user_func和call_user_func_array用法详解


Posted in PHP onMarch 02, 2014

call_user_func函数是当需要动态调用函数时,才使用的,这个函数有两种用法:
第一种是调用孤独的函数:

<?php
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方法,嘿嘿
?>

第二种是调用类内部的函数:
<?php
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()函数获取传入函数中的参数的个数。

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

<?php
function a($b, $c)
{
    echo $b;
    echo $c; 
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?>

call_user_func_array函数也可以调用类内部的方法的

<?php
Class ClassA
{
    function bc($b, $c) {
        $bc = $b + $c;
        echo $bc;
    }
}
call_user_func_array(array(‘ClassA','bc'), array(“111″, “222″));
//显示 333
?>

下面再看一个动态调用函数的例子:
<?php
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");
?>

PHP 相关文章推荐
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
May 07 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
php结合ajax实现赞、顶、踩功能实例
May 12 PHP
php数组排序usort、uksort与sort函数用法
Nov 17 PHP
PHP生成不重复随机数的方法汇总
Nov 19 PHP
php实现转换ubb代码的方法
Jun 18 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
Oct 08 PHP
教大家制作简单的php日历
Nov 17 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
PHP 字符串长度判断效率更高的方法
Mar 02 #PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 #PHP
PHP代码优化之成员变量获取速度对比
Feb 28 #PHP
php递归方法实现无限分类实例代码
Feb 28 #PHP
PHP中常用的转义函数
Feb 28 #PHP
PHP中鲜为人知的10个函数
Feb 28 #PHP
php中调用其他系统http接口的方法说明
Feb 28 #PHP
You might like
php好代码风格的阶段性总结
2016/06/25 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
2018/10/14 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
js不是基础的基础
2006/12/24 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
jquery插件jquery倒计时插件分享
2013/12/27 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
2015/04/26 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
如何使用jquery实现文字上下滚动效果
2016/10/12 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
Python通用函数实现数组计算的方法
2019/06/13 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Python shelve模块实现解析
2019/08/28 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
python无序链表删除重复项的方法
2020/01/17 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
python3 简单实现组合设计模式
2020/07/02 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
HTML5实现预览本地图片
2016/02/17 HTML / CSS
员工工作表扬信范文
2014/01/13 职场文书
基层干部十八大感言
2014/01/19 职场文书
活动总结模板
2014/05/09 职场文书
2015年小学数学教师工作总结
2015/05/20 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
Oracle中update和select 关联操作
2022/01/18 Oracle
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python