call_user_func
来源:互联网 发布:dnf辅助端口团队 编辑:程序博客网 时间:2024/05/22 16:02
c语言中可以把函数指针作为另一个函数的参数传递,PHP显然没有C语言可以那么灵活控制指针,在实际实现中,我觉得可以用call_user_func代替。代码如下
<?php$flag = 1;//or $flag = 2;$arr = array(2,34,5,3,68,56,35,44,54,78,9,7,3,21);switch($flag){case 1:BubbleSort($arr,'Ascending');break;case 2:BubbleSort($arr,'Descending');break;}var_dump($arr);function BubbleSort(&$arr,$fun){for($i=0;$i<count($arr);$i++){for($j=0;$j<count($arr)-1;$j++){if(call_user_func($fun,$arr[$j],$arr[$j+1])){//也可以用$fun($arr[$j],$arr[$j+1])代替$t = $arr[$j];$arr[$j] = $arr[$j+1];$arr[$j+1] = $t;}}}return $arr;}function Ascending($a,$b){if($a > $b)return 1;elsereturn 0;}function Descending($a,$b){if($a < $b)return 1;elsereturn 0;}?>
这是一个冒泡排序的小程序。
一般如果我们想控制正序还是倒序,最直接的办法是每一个$flag=1和$flag=2分别写一个BubbleSort函数,在函数中控制正倒序。
如果用可以把函数指针作为函数参数带到BubbleSort函数中,代码的可扩展性显而易见,这么做的好处是BubbleSort只实现排序,至于正序还是倒序交给其他函数去执行。
至于PHP的函数指针是否可以拿到,我并不敢下结论,如果有大牛知道,请留言,感激不尽。
在拿不到函数指针的情况下,我能想到的方法就是用call_user_func代替,关于这个函数的使用可以参考这篇文章:
http://www.nowamagic.net/librarys/veda/detail/1509
0 0
- call_user_func()
- call_user_func
- call_user_func
- call_user_func
- call_user_func
- call_user_func
- call_user_func
- call_user_func
- call_user_func()
- call_user_func 使用方法
- PHP -- call_user_func()
- php call_user_func
- call_user_func()详解
- call_user_func和call_user_func_array
- php 函数call_user_func解析
- PHP手册-call_user_func
- call_user_func函数简单用法
- call_user_func和call_user_func_array
- IOS开源库
- leetCode解题报告之Clone Graph
- CentOS6.5. SVN + Apache 安装好后通过网页端访问密码死活验证不过的问题
- linux crontab 与 spring quartz
- Arduino字符串转换为字符数组
- call_user_func
- 笨小五工作笔录之-runAction动作篇
- 青春考卷
- Log4E的安装与使用(一)
- ASP.NET小技巧——回传后保持页面的滚动位置
- iOS 正则表达式 NSRegularExpression
- .Net 基础 之 继承
- Log4E的安装与使用(二)
- 数据结构之AVL树