PHP中功能强大却少使用的函数 -- 为你提供更多的思路
2014-08-21 16:39
429 查看
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函数和自定义的函数:
function a(){}
$b = get_defined_functions();
print_r($b);
//也许会显示1000多个已定义了的函数:)
?>
<?php
function_exists函数判定一个函数是否存在(可以是PHP函数,也可以是自定义函数)。
if (function_exists('a')) {
echo "yes";
} else {
echo "no";
}
function a(){}
// 显示 yes
?>
<?php
call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:
function a($b,$c)
{
echo $b;
echo $c;
}
call_user_func('a', "111","222");
call_user_func('a', "333","444");
//显示 111 222 333 444
?>
<?php
调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
<?php
class a {
function b($c)
{
echo $c;
}
}
call_user_func(array("a", "b"),"111");
//显示 111
?>
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
function a($b, $c)
{
echo $b;
echo $c;
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?>
<?php
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
function a(&$b)
{
$b++;
}
$c = 0;
call_user_func('a', &$c);
echo $c;//显示 1
call_user_func_array('a', array(&$c));
echo $c;//显示 2
?>
<?php
func_num_args函数可以获取函数接受到参数的数量:
function a()
{
echo func_num_args();
}
a(111, 222, 333);
//显示 3
?>
<?php
func_get_arg函数可以获取某一个传递过来参数的值,在下面的例子中,在函数中并没有具体说明有哪些参数会被接受,利用 func_get_arg还可以获取额外的参数:
function a()
{
echo func_get_arg(1);
}
a (111, 222, 333);
//显示 222
?>
<?php
func_get_args函数的作用和func_get_arg非常相似,是把所有的参数当成数组来调用:
function a()
{
$numargs = func_num_args();
$b = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo $b[$i];
}
}
a(111, 222, 333);
//显示 111 222 333
?>
<?php
create_function函数可以建立一个匿名的函数(函数名被PHP默认为lambda_1,lambda_2),样子比较古怪,但是形式比较奇特,要注意第二个参数内的语句要有“;”分隔:
$newfunc = create_function('$a,$b', 'return $a + $b;');
echo $newfunc;
echo $newfunc(2, 3);
//显示 lambda_1 5
?>
<?php
register_shutdown_function函数可以注册一个在页面载入完成之后运行的函数(功能有点像缓存),register_shutdown_function也可以像call_user_func函数一样用作对类内部方法的调用:
function a() {
echo 222 ;
}
echo 111;
register_shutdown_function('a');
//显示 111 222
?>
<?php
class a
{
function b ($c)
{
echo $c;
}
}
register_shutdown_function (array ('a', 'b'), '111');
//显示 111
?>
<?php
register_tick_function函数和unregister_tick_function函数必须要和declare流程控制机制合并使用,那么就先了解一下declare和tick:
statement
}
declare (directive){
Tick 是一个在 declare 代码段中解释器每执行 N 条低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。在每个 tick 中出现的事件是由 register_tick_function() 来指定的。举例如下:
function foo($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的值,我们可以获得不同的运行结果。
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函数和自定义的函数:
function a(){}
$b = get_defined_functions();
print_r($b);
//也许会显示1000多个已定义了的函数:)
?>
<?php
<?php function a(){} $b = get_defined_functions(); print_r($b); //也许会显示1000多个已定义了的函数:) ?>
function_exists函数判定一个函数是否存在(可以是PHP函数,也可以是自定义函数)。
if (function_exists('a')) {
echo "yes";
} else {
echo "no";
}
function a(){}
// 显示 yes
?>
<?php
<?php if (function_exists('a')) { echo "yes"; } else { echo "no"; } function a(){} // 显示 yes ?>
call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:
function a($b,$c)
{
echo $b;
echo $c;
}
call_user_func('a', "111","222");
call_user_func('a', "333","444");
//显示 111 222 333 444
?>
<?php
<?php function a($b,$c) { echo $b; echo $c; } call_user_func('a', "111","222"); call_user_func('a', "333","444"); //显示 111 222 333 444 ?>
调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
<?php
class a {
function b($c)
{
echo $c;
}
}
call_user_func(array("a", "b"),"111");
//显示 111
?>
<?php class a { function b($c) { echo $c; } } call_user_func(array("a", "b"),"111"); //显示 111 ?>
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
function a($b, $c)
{
echo $b;
echo $c;
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?>
<?php
<?php function a($b, $c) { echo $b; echo $c; } call_user_func_array('a', array("111", "222")); //显示 111 222 ?>
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
function a(&$b)
{
$b++;
}
$c = 0;
call_user_func('a', &$c);
echo $c;//显示 1
call_user_func_array('a', array(&$c));
echo $c;//显示 2
?>
<?php
<?php function a(&$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函数可以获取函数接受到参数的数量:
function a()
{
echo func_num_args();
}
a(111, 222, 333);
//显示 3
?>
<?php
<?php function a() { echo func_num_args(); } a(111, 222, 333); //显示 3 ?>
func_get_arg函数可以获取某一个传递过来参数的值,在下面的例子中,在函数中并没有具体说明有哪些参数会被接受,利用 func_get_arg还可以获取额外的参数:
function a()
{
echo func_get_arg(1);
}
a (111, 222, 333);
//显示 222
?>
<?php
<?php function a() { echo func_get_arg(1); } a (111, 222, 333); //显示 222 ?>
func_get_args函数的作用和func_get_arg非常相似,是把所有的参数当成数组来调用:
function a()
{
$numargs = func_num_args();
$b = func_get_args();
for ($i = 0; $i < $numargs; $i++) {
echo $b[$i];
}
}
a(111, 222, 333);
//显示 111 222 333
?>
<?php
<?php function a() { $numargs = func_num_args(); $b = func_get_args(); for ($i = 0; $i < $numargs; $i++) { echo $b[$i]; } } a(111, 222, 333); //显示 111 222 333 ?>
create_function函数可以建立一个匿名的函数(函数名被PHP默认为lambda_1,lambda_2),样子比较古怪,但是形式比较奇特,要注意第二个参数内的语句要有“;”分隔:
$newfunc = create_function('$a,$b', 'return $a + $b;');
echo $newfunc;
echo $newfunc(2, 3);
//显示 lambda_1 5
?>
<?php
<?php $newfunc = create_function('$a,$b', 'return $a + $b;'); echo $newfunc; echo $newfunc(2, 3); //显示 lambda_1 5 ?>
register_shutdown_function函数可以注册一个在页面载入完成之后运行的函数(功能有点像缓存),register_shutdown_function也可以像call_user_func函数一样用作对类内部方法的调用:
function a() {
echo 222 ;
}
echo 111;
register_shutdown_function('a');
//显示 111 222
?>
<?php
<?php function a() { echo 222 ; } echo 111; register_shutdown_function('a'); //显示 111 222 ?>
class a
{
function b ($c)
{
echo $c;
}
}
register_shutdown_function (array ('a', 'b'), '111');
//显示 111
?>
<?php
<?php class a { function b ($c) { echo $c; } } register_shutdown_function (array ('a', 'b'), '111'); //显示 111 ?>
register_tick_function函数和unregister_tick_function函数必须要和declare流程控制机制合并使用,那么就先了解一下declare和tick:
statement
}
declare (directive){
declare (directive){ statement }
Tick 是一个在 declare 代码段中解释器每执行 N 条低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。在每个 tick 中出现的事件是由 register_tick_function() 来指定的。举例如下:
function foo($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>";
}
}
?>
<?
<? function foo($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中功能强大却很少使用的函数实例小结
- PHP中功能强大却少使用的函数
- PHP中功能强大却少使用的函数
- PHP中功能强大却少用的函数
- php被遗忘的一些功能强大的字符串处理函数
- php使用自定义函数实现汉字分割替换功能示例
- QVector 和vector的比较(QVector默认使用隐式共享,而且有更多的函数提供)
- 功能强大的php分页函数
- 为你的程序/系统提供强大的配置功能(选项配置文件的读写)
- Collections:给集合操作提供了更多的功能和Arraylist使用方法
- (五)OpenCV提供一个功能强大的UI接口,可以在MFC、Qt、WinForms、Cocoa等平台下使用
- 在phpredis中使用redis3.2版本开始提供的GEO功能
- 使用分析函数实现Oracle 10G提供的CONNECT_BY_ISLEAF和CONNECT_BY_ROOT的功能(转载)
- 使用PHP调用功能强大的JAVA 类库
- 如何在不使用系统函数的情况下实现PHP中数组系统函数的功能
- Task是.net 4.0中的一个新特性,提供的功能非常强大,下面是其具体的使用方法演示:
- 功能强大的php分页函数
- PHP功能强大的字符串处理函数