php强大的函数,PHP中一些功能强大却很少使用的函数
本文主要介绍了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中一些功能强大却很少使用的函数相关推荐
- SCI论文写作的过程中,功能强大工具有哪些? - 易智编译EaseEditing
论文写作的过程中,常常需要用到一些工具,易智编译整理了一些有助于提高论文写作效率的软件工具,包括思维工具.词典类.制图工具类.文献生成类这四个方面,大家可以根据自己的需求合理的选择适合自己的工具,从而 ...
- python中的translate函数_python中翻译功能translate模块实现方法
现如今,各个国家交流密切,通过翻译使我们打破了语言壁垒,而翻译在互联网上的存在也尤为普遍.python中执行翻译操作的包是translate包,通过下载安装translate包,使用translate ...
- 不存在从node到node*的适当转换函数_C++中参数需要类型转换,请不要用成员函数...
点蓝色字关注"CurryCoder的程序人生" 微信公众号:CurryCoder的程序人生 欢迎关注我,一起学习,一起进步! 1.问题的引入 C++支持隐式类型转换,但通常情况下是 ...
- rails 添加外键_如何在Rails后端中添加功能强大的搜索引擎
rails 添加外键 by Domenico Angilletta 通过多梅尼科·安吉列塔(Domenico Angilletta) In my experience as a Ruby on Rai ...
- js 将内部函数变成全局函数_js中三种作用域详解(全局,函数,块级)
1.全局变量:声明在函数外部的变量(所有没有var直接赋值的变量都属于全局变量) 2.局部变量:声明在函数内部的变量(所有没有var直接赋值的变量都属于全局变量) JS中变量申明分显式申明和隐式申明. ...
- php with函数,PHP中的startsWith()和endsWith()函数
我如何编写两个带字符串的函数,如果它以指定的字符/字符串开头或以它结尾,则返回? 例如: $str = '|apples}'; echo startsWith($str, '|'); //Return ...
- matlab中非0即1函数,matlab 中统计一个数组中非零元素个素的函数名称是什么?
可以自己写一个函数用来给数组排序.或者用MATLAB自带的 Matlab 用sort函数排序 二维数组2008-09-14 22:51在Matlab中排序某个向量(一维)时,可以使用sort(A),其 ...
- oracle+nvlif函数,Oracle中的NVL()、NVL2()、NULLIF()、Coalesce()函数
大家先来看看下面这道简单的题目: 1. TEST表包含两个列,TESTCOL定义为数据类型NUMBER(10),TESTCOL_2定义为数据类型VARCHAR2(10).在Oracle中发出下列语句 ...
- python分组函数_Python中如何按列分组和按自己的函数汇总
让df作为我们来自熊猫的测试数据框:import pandas as pd import numpy as np df = pd.DataFrame({'A' : ['foo', 'bar', 'fo ...
最新文章
- Android应用签名详解 Eclipse+ADT
- php round函数输出不对_Python 四舍五入函数 Round
- AlphaFold 和 AI 蛋白质折叠革命的下一步是什么
- data.frame类型数据如何将第一列值替换为行号
- Inter Thread Latency
- SelectObject失败原因 cannot convert from ‘HGDIOBJ‘ to ‘CBrush‘
- 电源大师课笔记 2.1
- EEGLAB 使用记录
- 如何用 ISO 镜像制作 U 盘安装盘(通用方法、无需 WinPE)
- 推理和论证(证明)的区别
- 服务器 解决方案_为什么无服务器解决方案不安全?
- 蓝牙耳机蓝牙音箱出口加拿大亚马逊ICID认证周期费用
- NR 5G 系统信息
- pinta(centos7画图软件)
- 获取VM中win10虚拟机映像
- QIIME 2教程. 06沙漠土壤分析AtacamaSoil(2021.2)
- 生物网络中基于节点相似度的链路预测图卷积
- HashMap源码总结(持续更新中)
- ucore lab1 实验报告
- linux启动无线网卡命令,linux以命令行下配置连接wlan无线网卡
热门文章
- 嵌入式linux 配置usb otg,嵌入式linux系统环境下USB设备的驱动实现
- Java –什么是瞬态字段?
- php一句话怎么写_PHP一句话木马后门
- php oci8 11,linux下为php开启oci8扩展(ubuntu14亲测可用)
- linux 登入用户记录,linux记录所有用户登陆及执行过的命令脚本
- jMeter 模拟 web 高并发请求
- jni c 传递对象到java_JNI将二进制数据从C传递到Java
- (二叉树存储+递归遍历)Binary Tree Traversals
- miniui datagrid 隐藏列默认赋值_Qt商业组件DataGrid:内置视图和布局详解(一)
- html内容封装为一个对象_技术赋能还是内容为王,哪一个才是短视频创作的关键?...