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安全配置
Dec 06 PHP
fleaphp下不确定的多条件查询的巧妙解决方法
Sep 11 PHP
php print EOF实现方法
May 21 PHP
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
Jan 27 PHP
php中将数组转成字符串并保存到数据库中的函数代码
Sep 29 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
php比较相似字符串的方法
Jun 05 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 PHP
PHP实现上传多图即时显示与即时删除的方法
May 09 PHP
phpmyadmin下载、安装、配置教程
May 16 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 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
DC动画很好看?新作烂得令人发指,名叫《红色之子》
2020/04/09 欧美动漫
php判断GIF图片是否为动画的方法
2020/09/04 PHP
封装好的省市地区联动控件附下载
2007/08/13 Javascript
jquery 实现的全选和反选
2009/04/15 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
2016/12/16 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
Python 2与Python 3版本和编码的对比
2017/02/14 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
对numpy中轴与维度的理解
2018/04/18 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
Python实现分段线性插值
2018/12/17 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
html5与css3小应用
2013/04/03 HTML / CSS
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
大学生就业自荐信
2013/10/26 职场文书
红领巾心向党广播稿
2014/01/19 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
爱之链教学反思
2014/04/30 职场文书
后备干部培训方案
2014/05/22 职场文书
英语教师自荐信
2014/05/26 职场文书
英文商务邀请函范文
2015/01/31 职场文书
新学期小学班主任工作计划
2019/06/21 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
简单介绍Python的第三方库yaml
2021/06/18 Python