189 8069 5689

php回调返回数据,php回调函数定义与实现

PHP中的回调函数是怎么实现的?

第一种,

创新互联长期为1000多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为乐业企业提供专业的网站设计、网站建设,乐业网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。

常规的php全局函数

function

test($echo)

{

echo

$echo,

"\n";

}

$param

=

array("");

call_user_func_array(test,

$param);

call_user_func_array("test",

$param);

输出:

两种调用方式都可以成功调用,

说明call_user_func_array调用常规php局函数时的第一个参数可以为函数本身,也可以为表示函数名的字符串。

第二种,

类的静态方法

class

TestC

{

static

function

test($echo)

{

echo

$echo,

"\n";

}

}

$param

=

array("");

call_user_func_array(array(TestC,

"test"),

$param);

call_user_func_array(array("TestC",

"test"),

$param);

输出:

这时传第一个参数的时候传了一个数据。数组的第一个元素可以为类本身,也可以为类名的一个字符串。第二个元素则是一个表示方法名的字符串。

第三种,对象的方法

class

TestC

{

protected

$_a

=

"hello

word";

function

test($echo)

{

$this-_a

=

$echo;

}

function

show()

{

echo

$this-_a,

"\n";

}

}

$param

=

array("");

$obj

=

new

TestC();

call_user_func_array(array($obj,

"test"),

$param);

$obj-show();

$obj-test("WEB应用开发");

$obj-show();

输出:

WEB应用开发

这里是调用一个对象的方法。从test方法中设置对象的_a成员,然后通过show方法将它显示出来,以验证call_user_func_array调用方法时可以正确等到$this指针。这里输出的结果表明已经上面的方法是奏效的。其实回调对象的方法还有一种更加简单的方法,直接$obj-{$method}()就可以调用,只要{$method}是存在的。

php中的回调函数

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

php提供了两个内置函数call_user_func()和call_user_func_array()提供对回调函数的支持。这两个函数的区别是call_user_func_array是以数组的形式接收回调函数的参数的,看它的原型就知道了:mixed call_user_func_array ( callable $callback,array$param_arr ),它只有两个参数。而call_user_func($callback,参数1,参数2,…)的参数个数根据回调函数的参数来确定的。

PHP关于回调函数的问题

原文

PHP Array 函数

定义和用法

array_udiff() 函数返回一个数组,该数组包括了所有在被比较数组中,但是不在任何其它参数数组中的值,键名保留不变。

array_udiff() 函数与 array_diff() 函数 的行为不同,后者用内部函数进行比较。

数据的比较是用 array_udiff() 函数的 function 进行的。function 函数带有两个将进行比较的参数。如果第一个参数小于第二个参数,则函数返回一个负数,如果两个参数相等,则要返回 0,如果第一个参数大于第二个,则返回一个正数。

其实传入的参数作用是指定对比规则,实际上就是用户可以自己定义什么是大于,等于,小于

例如,正常的用法

function($a,$b){

if($a $b) return 1;

if($a $b) return -1;

return 0;

}

但是,如果有特殊的需求,我们也可以声明特别的规则,如

function ($a, $b) {

if($a + 1 $b) return -1;

if ($a + 1 $b) return 1;

if ($a + 1 == $b) return 0;

}

php里面怎么为数组的每个元素应用回调函数?

具体看是想对元素如何操作,比如 array_filter():用回调函数过滤数组中的单元,可以使用回调函数对数组中元素进行筛选剔除元素;

如果是针对每个元素,使用其他函数的话,array_map :数组的每个元素应用回调函数,使用示例:

为数组每个元素执行+5计算;

$arr = [1,2,3,4,5];

#匿名函数操作

$res=array_map(function($item){return $item*2; },$arr);

array_map("函数名", 数组);支持使用 函数名+数据变量 使用。

PHP将回调函数作用到给定数组单元的方法

数组是PHP程序设计中十分重要的一环。本文介绍PHP中数组函数array_map()的用法,实现将回调函数作用到给定数组单元上。具体如下:

array

array_map

(

callable

$callback

,

array

$arr1

[,

array

$...

]

)

array_map()

返回一个数组,该数组包含了

arr1

中的所有单元经过

callback

作用过之后的单元。

callback

接受的参数数目应该和传递给

array_map()

函数的数组数目一致。

示例程序如下:

function

fun($n)

{

return

$n

*

$n

*

$n;

}

$a

=

array(1,

2,

3,

4,

5);

$b

=

array_map('fun',

$a);

/*

每个数组单元作三次方运算,返回数组

*/

print_r($b);

输出结果为:

Array

(

[0]

=

1

[1]

=

8

[2]

=

27

[3]

=

64

[4]

=

125

)

此外,array_map()函数还有如下几种用法:

array_map('unlink',

glob('*.txt'));/*

glob返回"文件名.txt"组成的数组,然后对每个文件进行删除操作*/

array_map('unlink',

glob('*.*'));

array_map('unlink',

glob('*'));

如果不使用array_map(),对数组每个单元进行操作就只能遍历然后适当组装。

更多的应用读者可以根据具体的项目需求进行挖掘。

PHP回调函数的几种用法

具体代码如下:

?php

$ch = curl_init();

$timeout = 5;

curl_setopt ($ch, CURLOPT_URL, '');

curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

$file_contents = curl_exec($ch);

curl_close($ch);

echo $file_contents;

?

PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。

它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,

执行效率比完全生成HTML标记的CGI要高许多;

PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。


网站名称:php回调返回数据,php回调函数定义与实现
文章网址:http://jkwzsj.com/article/dsgoied.html

其他资讯