功能强大但很少有人用的函数

本文介绍了几个在PHP中功能强大但较少使用的函数,包括create_function用于创建匿名函数、func_get_arg获取特定参数值及func_get_args获取所有参数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能强大但很少有人用的函数


有一些函数,我们平时很少有人用,但并不否认它们很强大.目前市面上的函数足够多,加上网友自己写的.并不在少数.有些函数被忽视了.

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 — 取消一个按要求调用的函数

create_function函数可以建立一个匿名的函数(函数名被PHP默认为lambda_1,lambda_2),样子比较古怪,但是形式比较奇特,要注意第二个参数内的语句要有“;”分隔

$newfunc = create_function('$a,$b', 'return $a + $b;');
echo $newfunc;
echo $newfunc(2, 3);
//显示 lambda_1 5


func_get_arg函数可以获取某一个传递过来参数的值,在下面的例子中,在函数中并没有具体说明有哪些参数会被接受,利用func_get_arg还可以获取额外的参数:

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


get_defined_functions可以获取所有的PHP函数和自定义的函数:

function a(){}
$b = get_defined_functions();
print_r($b);
//也许会显示1000多个已定义了的函数:)


register_shutdown_function函数可以注册一个在页面载入完成之后运行的函数(功能有点像缓存),register_shutdown_function也可以像call_user_func函数一样用作对类内部方法的调用:

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


register_tick_function函数和unregister_tick_function函数必须要和declare流程控制机制合并使用,那么就先了解一下declare和tick:

declare (directive){
    statement
}

Tick 是一个在 declare 代码段中解释器每执行 N 条低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。在每个 tick 中出现的事件是由 register_tick_function() 来指定的。举例如下:


function foo($str) {
  static $i = 0;
  print "$str: $i";
  $i++;

register_tick_function("foo", "count");
   declare (ticks = 6) {
      for($i=0; $i<20; $i++) {
      echo "$i";
   }
}


在这个例子中的declare(ticks = N){statement}流程控制里面,每执行6行(ticks = 6)代码,就需要运行一次foo()函数,通过更改ticks的值,我们可以获得不同的运行结果。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值