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 相关文章推荐
解决phpmyadmin 乱码,支持gb2312和utf-8
Nov 20 PHP
用PHP实现多服务器共享SESSION数据的方法
Mar 16 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
php switch语句多个值匹配同一代码块应用示例
Jul 29 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
php实现paypal 授权登录
May 28 PHP
php编程每天必学之表单验证
Mar 01 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
PHP编写daemon process 实例详解
Nov 13 PHP
php下的原生ajax请求用法实例分析
Feb 28 PHP
PHP论坛实现积分系统的思路代码详解
Jun 01 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
《五等分的花嫁》漫画完结!2020年10月第2期TV动画制作组换血!
2020/03/06 日漫
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
Yii 2中的load()和save()示例详解
2017/08/03 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
告诉大家什么是JSON
2008/06/10 Javascript
javascript prototype原型操作笔记
2009/12/07 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
Javascript闭包(Closure)详解
2015/05/05 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
使用jQuery 操作table 完成单元格合并的实例
2017/12/27 jQuery
JS求解两数之和算法详解
2020/04/28 Javascript
js实现点击上传图片并设为模糊背景
2020/08/02 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python实现beta分布概率密度函数的方法
2019/07/08 Python
TensorFlow 多元函数的极值实例
2020/02/10 Python
python Paramiko使用示例
2020/09/21 Python
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
日本最佳原创设计品牌:Felissimo(芬理希梦)
2019/03/19 全球购物
后勤人员岗位职责
2013/12/17 职场文书
酒店管理专业自荐信
2014/05/23 职场文书
经济管理自荐书
2014/06/09 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
Vue3中toRef与toRefs的区别
2022/03/24 Vue.js