函数的回调是PHP中的一种特殊机制,这种机制允许在函数的参数列表中,传入用户自定义的函数地址作为参数处理或完成一定的操作。使用回调函数可以很容易地实现一些所需的功能。以下将介绍几个主要的使用回调函数处理数组的函数。
1、函数 array_filter()
array_filter()函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。其语法如下:
array_filter(array,callbackfunction);
函数使用的代码如下:
<?php
function myfunc($var){
if($var%2 == 0){
return true;
}
}
$arr = array('a'=>1,'b'=>2,'c'=>3,'d'=>4);
print_r(array_filter($arr,'myfunc'));
// 输出结果:Array ( [b] => 2 [d] => 4 )
2、函数 array_walk()
array_walk() 函数对数组中的每个元素应用用户自定义函数。如果成功则返回 TRUE,否则返回 FALSE。其语法如下:
array_walk(array,myfunction,userdata……)
示例代码如下:
<?php
function myfunction($value,$key){
echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
/*输出结果:
The key a has the value red
The key b has the value green
The key c has the value blue
*/
// 传入第三个参数
function myfunction1($value,$key,$p){
echo "$key $p $value<br>";
}
array_walk($a,"myfunction1",'has the value');
/*输出结果:
a has the value red
b has the value green
c has the value blue
*/
3、函数 array_map()
array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。与 array_walk() 函数相比,array_map() 函数可以处理多个数组。其语法如下:
array_map(myfunction,array1,array2,array3……)
该函数使用的示例代码如下:
<?php
function pursue($v){
return($v*$v);
}
$a=array(1,2,3,4,5);
print_r(array_map("pursue",$a));
//输出结果:
// Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )
function compare($v1,$v2){
if($v1 == $v2){
return 'same';
}
return 'different';
}
$a1 = array('Linux','PHP','MySQL');
$a2 = array('Unix','PHP','Oracle');
// 传入多个数组
print_r(array_map("compare",$a1,$a2));
//输出结果:
// Array ( [0] => different [1] => same [2] => different )