本文主要介绍了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

function a(){}

$b = get_defined_functions();

print_r($b);

//也许会显示1000多个已定义了的函数:)

?>

function_exists函数判定一个函数是否存在(可以是PHP函数,也可以是自定义函数)。<?php

if (function_exists('a')) {

echo "yes";

} else {

echo "no";

}

function a(){}

// 显示 yes

?>

call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:<?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

?>

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函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:<?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函数可以获取函数接受到参数的数量:<?php

function a()

{

echo func_num_args();

}

a(111, 222, 333);

//显示 3

?>

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

function a()

{

echo func_get_arg(1);

}

a (111, 222, 333);

//显示 222

?>

func_get_args函数的作用和func_get_arg非常相似,是把所有的参数当成数组来调用:<?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),样子比较古怪,但是形式比较奇特,要注意第二个参数内的语句要有“;”分隔:<?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函数一样用作对类内部方法的调用:<?php

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

?>

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的值,我们可以获得不同的运行结果。

相关推荐:

PHP 函数语法介绍一_PHP教程

PHP 函数执行效率的小比较_PHP教程

php 函数使用方法与函数定义方法_PHP教程

php强大的函数,PHP中一些功能强大却很少使用的函数相关推荐

  1. SCI论文写作的过程中,功能强大工具有哪些? - 易智编译EaseEditing

    论文写作的过程中,常常需要用到一些工具,易智编译整理了一些有助于提高论文写作效率的软件工具,包括思维工具.词典类.制图工具类.文献生成类这四个方面,大家可以根据自己的需求合理的选择适合自己的工具,从而 ...

  2. python中的translate函数_python中翻译功能translate模块实现方法

    现如今,各个国家交流密切,通过翻译使我们打破了语言壁垒,而翻译在互联网上的存在也尤为普遍.python中执行翻译操作的包是translate包,通过下载安装translate包,使用translate ...

  3. 不存在从node到node*的适当转换函数_C++中参数需要类型转换,请不要用成员函数...

    点蓝色字关注"CurryCoder的程序人生" 微信公众号:CurryCoder的程序人生 欢迎关注我,一起学习,一起进步! 1.问题的引入 C++支持隐式类型转换,但通常情况下是 ...

  4. rails 添加外键_如何在Rails后端中添加功能强大的搜索引擎

    rails 添加外键 by Domenico Angilletta 通过多梅尼科·安吉列塔(Domenico Angilletta) In my experience as a Ruby on Rai ...

  5. js 将内部函数变成全局函数_js中三种作用域详解(全局,函数,块级)

    1.全局变量:声明在函数外部的变量(所有没有var直接赋值的变量都属于全局变量) 2.局部变量:声明在函数内部的变量(所有没有var直接赋值的变量都属于全局变量) JS中变量申明分显式申明和隐式申明. ...

  6. php with函数,PHP中的startsWith()和endsWith()函数

    我如何编写两个带字符串的函数,如果它以指定的字符/字符串开头或以它结尾,则返回? 例如: $str = '|apples}'; echo startsWith($str, '|'); //Return ...

  7. matlab中非0即1函数,matlab 中统计一个数组中非零元素个素的函数名称是什么?

    可以自己写一个函数用来给数组排序.或者用MATLAB自带的 Matlab 用sort函数排序 二维数组2008-09-14 22:51在Matlab中排序某个向量(一维)时,可以使用sort(A),其 ...

  8. oracle+nvlif函数,Oracle中的NVL()、NVL2()、NULLIF()、Coalesce()函数

    大家先来看看下面这道简单的题目: 1.  TEST表包含两个列,TESTCOL定义为数据类型NUMBER(10),TESTCOL_2定义为数据类型VARCHAR2(10).在Oracle中发出下列语句 ...

  9. python分组函数_Python中如何按列分组和按自己的函数汇总

    让df作为我们来自熊猫的测试数据框:import pandas as pd import numpy as np df = pd.DataFrame({'A' : ['foo', 'bar', 'fo ...

最新文章

  1. Android应用签名详解 Eclipse+ADT
  2. php round函数输出不对_Python 四舍五入函数 Round
  3. AlphaFold 和 AI 蛋白质折叠革命的下一步是什么
  4. data.frame类型数据如何将第一列值替换为行号
  5. Inter Thread Latency
  6. SelectObject失败原因 cannot convert from ‘HGDIOBJ‘ to ‘CBrush‘
  7. 电源大师课笔记 2.1
  8. EEGLAB 使用记录
  9. 如何用 ISO 镜像制作 U 盘安装盘(通用方法、无需 WinPE)
  10. 推理和论证(证明)的区别
  11. 服务器 解决方案_为什么无服务器解决方案不安全?
  12. 蓝牙耳机蓝牙音箱出口加拿大亚马逊ICID认证周期费用
  13. NR 5G 系统信息
  14. pinta(centos7画图软件)
  15. 获取VM中win10虚拟机映像
  16. QIIME 2教程. 06沙漠土壤分析AtacamaSoil(2021.2)
  17. 生物网络中基于节点相似度的链路预测图卷积
  18. HashMap源码总结(持续更新中)
  19. ucore lab1 实验报告
  20. linux启动无线网卡命令,linux以命令行下配置连接wlan无线网卡

热门文章

  1. 嵌入式linux 配置usb otg,嵌入式linux系统环境下USB设备的驱动实现
  2. Java –什么是瞬态字段?
  3. php一句话怎么写_PHP一句话木马后门
  4. php oci8 11,linux下为php开启oci8扩展(ubuntu14亲测可用)
  5. linux 登入用户记录,linux记录所有用户登陆及执行过的命令脚本
  6. jMeter 模拟 web 高并发请求
  7. jni c 传递对象到java_JNI将二进制数据从C传递到Java
  8. (二叉树存储+递归遍历)Binary Tree Traversals
  9. miniui datagrid 隐藏列默认赋值_Qt商业组件DataGrid:内置视图和布局详解(一)
  10. html内容封装为一个对象_技术赋能还是内容为王,哪一个才是短视频创作的关键?...