PHP中功能强大却很少使用的函数实例小结
本文实例讲述了PHP中功能强大却很少使用的函数。分享给大家供大家参考,具体如下:
call_user_func_array—让参数以数组的形式调用一个函数
call_user_func—调用一个存在的函数
create_function—建立一个函数
func_get_arg—获取函数中某个参数的值
func_get_args—获取函数的所有参数并组成数组
func_num_args—获取一个函数的参数个数
function_exists—判定一个函数是否存在
get_defined_functions—获取已有的函数信息
register_shutdown_function—注册一个页面载入完成后运行的函数
register_tick_function—注册一个按要求调用的函数
unregister_tick_function—取消一个按要求调用的函数
get_defined_functions可以获取所有的PHP函数和自定义的函数:
<?php functiona(){} $b=get_defined_functions(); print_r($b); //也许会显示1000多个已定义了的函数:) ?>
function_exists函数判定一个函数是否存在(可以是PHP函数,也可以是自定义函数)。
<?php if(function_exists('a')){ echo"yes"; }else{ echo"no"; } functiona(){} //显示yes ?>
call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:
<?php functiona($b,$c) { echo$b; echo$c; } call_user_func('a',"111","222"); call_user_func('a',"333","444"); //显示111222333444 ?>
调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
<?php classa{ functionb($c) { echo$c; } } call_user_func(array("a","b"),"111"); //显示111 ?>
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
<?php functiona($b,$c) { echo$b; echo$c; } call_user_func_array('a',array("111","222")); //显示111222 ?>
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
<?php functiona(&$b) { $b++; } $c=0; call_user_func('a',&$c); echo$c;//显示1 call_user_func_array('a',array(&$c)); echo$c;//显示2 ?>
func_num_args函数可以获取函数接受到参数的数量:
<?php functiona() { echofunc_num_args(); } a(111,222,333); //显示3 ?>
func_get_arg函数可以获取某一个传递过来参数的值,在下面的例子中,在函数中并没有具体说明有哪些参数会被接受,利用func_get_arg还可以获取额外的参数:
<?php functiona() { echofunc_get_arg(1); } a(111,222,333); //显示222 ?>
func_get_args函数的作用和func_get_arg非常相似,是把所有的参数当成数组来调用:
<?php functiona() { $numargs=func_num_args(); $b=func_get_args(); for($i=0;$i<$numargs;$i++){ echo$b[$i]; } } a(111,222,333); //显示111222333 ?>
create_function函数可以建立一个匿名的函数(函数名被PHP默认为lambda_1,lambda_2),样子比较古怪,但是形式比较奇特,要注意第二个参数内的语句要有“;”分隔:
<?php $newfunc=create_function('$a,$b','return$a+$b;'); echo$newfunc; echo$newfunc(2,3); //显示lambda_15 ?>
register_shutdown_function函数可以注册一个在页面载入完成之后运行的函数(功能有点像缓存),register_shutdown_function也可以像call_user_func函数一样用作对类内部方法的调用:
<?php functiona(){ echo222; } echo111; register_shutdown_function('a'); //显示111222 ?>
<?php classa { functionb($c) { echo$c; } } register_shutdown_function(array('a','b'),'111'); //显示111 ?>
register_tick_function函数和unregister_tick_function函数必须要和declare流程控制机制合并使用,那么就先了解一下declare和tick:
declare(directive){ statement }
Tick是一个在declare代码段中解释器每执行N条低级语句就会发生的事件。N的值是在declare中的directive部分用ticks=N来指定的。在每个tick中出现的事件是由register_tick_function()来指定的。举例如下:
<? functionfoo($str){ static$i=0; print"$str:$i<br>"; $i++; } register_tick_function("foo","count"); declare(ticks=6){ for($i=0;$i<20;$i++){ echo"$i<br>"; } } ?>
在这个例子中的declare(ticks=N){statement}流程控制里面,每执行6行(ticks=6)代码,就需要运行一次foo()函数,通过更改ticks的值,我们可以获得不同的运行结果。
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php常用函数与技巧总结》、《php+mysql数据库操作入门教程》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。