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://abwzjs.com/article/dsgoied.html