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教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker 删除所有镜像_Docker常用命令

&#xfeff;docker 常用命令#查看 Docker 版本 docker version #从 Docker 文件构建 Docker 镜像 docker build -t image-name docker-file-location#运行 Docker 镜像 docker run -d image-name#查看可用的 Docker 镜像 docker images#查看最近的运行容器 docker ps -l#查看所…

php制作学生卡片,PHP基础案例一:展示学生资料卡

一、需求分析&#xff1a;请利用PHP的变量保存学生的姓名、出生日期、所属学科以及学号&#xff0c;最后将该学生的信息输出到网页中显示。其中&#xff0c;在定义学生的出生日期和学号时候&#xff0c;必须满足以下两个条件。1、出生日期为公历&#xff0c;填写格式为YYYY-MM-…

element label动态赋值_基于Element封装可拖动放大缩小的弹窗

ElementUI 自带的对话框组件(el-dialog)没有拖动和最小化的处理&#xff0c;目前业务遇到呼叫弹屏处理&#xff0c;基于el-dialog 再次进行封装下&#xff0c;上篇文章有人说图片换成代码就好了&#xff0c;下面代码部分我就直接放代码了&#xff0c;不再用图片处理了。先看看效…

php 根据数量创建数组,php实现根据字符串生成对应数组的方法

本文实例讲述了php实现根据字符串生成对应数组的方法&#xff0c;是比较实用的技巧。分享给大家供大家参考。具体方法如下&#xff1a;先看看如下示例&#xff1a;$config array(project|page|index > content,project|page|nav > array(array(image > 1.jpg,name &g…

eeg数据集_运动想象,情绪识别等公开数据集汇总

本文来自脑机接口社区运动影像数据Left/Right Hand MI: http://gigadb.org/dataset/100295Motor Movement/Imagery Dataset: https://www.physionet.org/physiobank/database/eegmmidb/Grasp and Lift EEG Challenge: https://www.kaggle.com/c/grasp-and-lift-eeg-detection/d…

php jsonerrorsyntax,php – json_decode返回JSON_ERROR_SYNTAX,但在线格式化程序表示JSON可以...

我有一个非常奇怪的问题。我有一个JSON webservice。一切都好。但是当我使用此代码加载我的JSON时&#xff1a;$data file_get_contents(http://www.mywebservice);if(!empty($data)){$obj json_decode($data);switch (json_last_error()) {case JSON_ERROR_NONE:echo - JSO…

excel批量删除公式保留数据_Excel实用tips(17) – 批量删除隐藏的工作表

大家可能遇到过这种情况&#xff1a;一个几经易手的远古 Excel 表&#xff0c;文件巨大无比&#xff0c;运行极慢&#xff0c;删除数据和公式也无济于事。反复查找原因&#xff0c;才发现表格中有好几十个隐藏的 worksheet&#xff0c;这些 worksheet 大多都是一些草稿表&#…

berkeley db java edition 源码,Berkeley DB Java Edition

本来想写一篇,发现网上有一篇已经写的很好了,所以稍微加一些介绍,其他部分尤其是去看它的吧.附带自己写的一个connection 代码.简介Berkeley DB(BDB)是一个高性能的&#xff0c;嵌入式键值对(Key/Value Pair)数据库.Berkeley DB可以支持数千的并发线程同时操作数据库&#xff0…

docker 修改阿里镜像源_使用阿里云容器镜像服务托管私有Docker镜像

一个只用markdown语法编写文章的90后野路子Web架构师&#xff0c;每天都分享一些有用的知识点&#xff0c;欢迎关注&#xff5e;前言概述本文主要讲解如何托管自己的Docker镜像到阿里云容器镜像服务ACR上&#xff0c;以及如何使用镜像加速器来提升获取Docker官方镜像的速度。名…

java 把图片插入窗体,JAVA JFrame窗体添加背景图像的两种方法

首先还是要了解框架JFrame中的层次结构。JFrame中的层次分布及相对关系是:最底层是&#xff1a;JRootPane&#xff1b;第二层是&#xff1a;JlayerPane&#xff1b;最上层就是ContentPane,也正是我们常说的内容面板。所以一般我们拖放的控件就是在ContentPane层上。有了这些常识…

python3 web框架_循序渐进Python3(十二) --0--  web之框架

上述通过socket来实现了其本质&#xff0c;而对于真实开发中的python web程序来说&#xff0c;一般会分为两部分&#xff1a;服务器程序和应用程序。服务器程序负责对socket服务器进行封装&#xff0c;并在请求到来时&#xff0c;对请求的各种数据进行整理。应用程序则负责具体…

图像识别开源代码_灰度图像着色开源代码

Victory组近期整理了灰度图像着色开源代码&#xff0c;文章刊登于《中国计算机学会计算机视觉专委会简报》2019年第2期上。灰度图像(gray image)是每个像素只有一个采样颜色的图像&#xff0c;即单通道图像&#xff0c;这类图像通常显示为从最暗黑色到最亮的白色的灰度&#xf…

【adb】电脑通过ADB向手机传输文件

具体步骤如下&#xff1a; Step1 下载ADB工具 下载最新版本的 ADB工具 !!! 注意&#xff1a;一定要是最新版本的ADB&#xff0c;否则很可能导致无法识别到手机。 将下载的ADB解压以后的文件如下图所示&#xff1a; Step2 添加环境变量 将 ADB的路径 D:\platformtools &…

java userdao,Java Web 开发基础------DAO

DAO (Data Access Objects)数据访问对象是第一个面向对象的接口&#xff0c;它显露了 Microsoft Jet数据库引擎(由 Microsoft Access 所使用)&#xff0c;并允许 Visual Basic 开发者通过 ODBC 象直接连接到其他数据库一样&#xff0c;直接连接到 Access 表。DAO 最适用于单系统…

git 提交文件_GIT不小心提交了大文件导致提交失败怎么办?

出现问题的原因在commit的时候&#xff0c;我们之前提交的版本里面已经包含了些大文件了&#xff0c;虽然后来在新的提交里面删除了这些大文件&#xff0c;但是之前commit的记录还是存在&#xff0c;所以之后提交还是会失败1) 模拟一下环境&#xff1a;新建仓库并且添加一个 te…

matlab中变.,Matlab变系数微分方程

附件给出的是齿轮动力学振动模型和微分方程其中x为要求的位移响应&#xff0c;Zeta为齿轮副相对阻尼系数&#xff0c;Zeta 0.07&#xff0c;m为等效质量m3&#xff1b;Fn为法向载荷Fn100N。k(t)为齿轮副的时变啮合刚度对k(t)我做了关于时间t的傅里叶变换&#xff1a;k750527161…

ztree 标准得json数据格式_酷站推荐 - json-c.github.io/json-c - json-c API

json-c.github.io/json-c/http://json-c.github.io/json-c/JSON&#xff1a;JavaScript 对象表示法&#xff08;JavaScript Object Notation&#xff09;。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快&#xff0c;更易解析。JSON(JavaScript Object …

matlab randn state 2,MATLAB?中的randn函数

matlab函数randn&#xff1a;产生正态分布的随机数或矩阵的函数randn产生均值为0&#xff0c;方差 σ^2 1&#xff0c;标准差σ 1的正态分布的随机数或矩阵的函数。用法&#xff1a;Y randn(n)返回一个n*n的随机项的矩阵。如果n不是个数量&#xff0c;将返回错误信息。Y ra…

qt弹框输入密码_Android仿支付宝密码输入框

实现效果图&#xff1a;实现流程&#xff1a;1、定义6位密码输入View思路&#xff1a;要绘制边框矩形&#xff0c;绘制分割线&#xff0c;绘制圆点。绘制圆的数目要与字符串的长度有关&#xff0c;添加或者删除都要修改字符串&#xff0c;输入6位后就是要关闭弹框&#xff0c;拿…

php 前置匹配,浅析PHP正则表达式匹配的特定实现

PHP正则表达式匹配的特定实现是什么呢&#xff1f;其实我们知道&#xff0c;在实际的匹配操作的过程中我们操作的不仅仅是单个的字母或是数字&#xff0c;那么我们面对像单词的或是一组数字的时候该如何处理呢&#xff1f;PHP正则表达式匹配的特定实现会使用到PHP正则表达式内置…