函数 array array_map(callback $callback , array array1 [, array $.....])
将输入数组交由$callback函数进行处理,并将处理结果保存在返回数组中。输入数组的数目要与$callback函数接收参数数目保持一致
$callback = function ($item) {
return $item * 2;
};
print_r(array_map($callback, array(1, 2, 3));
/*
Array([0] => 2 [1] => 4 [2] => 6)
*/
如果回调函数为空,
$array1 = array(1, 2, 3);
$array2 = array('a', 'b', 'c', 'd');
print_r(array_map(null, $array1, $array2));
/*
Array( [0] => Array ([0] => 1 [1] => a)
[1] => Array ([0] => 2 [1] => b)
[2] => Array ([0] => 3 [1] => c)
[3] => Array ([0] => [1] => d)
)
*/
函数 array array_filter ( array $input [, callback $callback ] )
将输入数组元素逐一交由$callback函数处理,如果$callback返回true则将该元素存储到返回数组中。在返回数组中元素保留原来的键值对应关系
// 利用按位与求奇数
function odd($var){
return($var & 1);
}
//利用按位与求偶数
function even($var){
return(!($var & 1));
}
print_r(array_filter(range(1, 10), 'odd'));//array(1, 3, 5, 7, 9)
print_r(array_filter(range(1, 10), 'even'));//array(2, 4, 6, 8, 10)
//可以用base_convert()函数进行不同进制间的转换,如
函数 array array_map(callback $callback , array array1 [, array $.....])
将输入数组交由$callback函数进行处理,并将处理结果保存在返回数组中。输入数组的数目要与$callback函数接收参数数目保持一致
$callback = function ($item) {
return $item * 2;
};
print_r(array_map($callback, array(1, 2, 3));
/*
Array( [0] => 2 [1] => 4 [2] => 6)
*/
如果回调函数为空,
$array1 = array(1, 2, 3);
$array2 = array('a', 'b', 'c', 'd');
print_r(array_map(null, $array1, $array2));
/*
Array(
[0] => Array ([0] => 1 [1] => a)
[1] => Array ([0] => 2 [1] => b)
[2] => Array ([0] => 3 [1] => c )
[3] => Array ([0] => [1] => d )
)
*/
函数 array array_filter ( array $input [, callback $callback ] )
将输入数组元素逐一交由$callback函数处理,如果$callback返回true则将该元素存储到返回数组中。在返回数组中元素保留原来的键值对应关系
// 利用按位与求奇数
function odd($var){
return($var & 1);
}
//利用按位与求偶数
function even($var){
return(!($var & 1));
}
print_r(array_filter(range(1, 10), 'odd'));//array(1, 3, 5, 7, 9)
print_r(array_filter(range(1, 10), 'even'));//array(2, 4, 6, 8, 10)
如果回调函数为空,返回数组中去掉所有等价于false的元素
print_r(array_filter(array(1, '0', 0, null, '', false, 2))); //array(1, 2)
array_map() 和 array_filter() 都可调用php内置函数,如
print_r(array_map('strlen', array(1, 'abc', 'hi'))); //array(1, 3, 2)
如果回调函数为空,返回数组中去掉所有等价于false的元素
print_r(array_filter(array(1, '0', 0, null, '', false, 2))); //array(1, 2)
函数 bool array_walk ( array &$array , callback $callback [, mixed $userdata ] ) 对数组中每个元素应用回调函数$callback,成功返回true失败返回false。
一般情况下回调函数接受两个参数,第一个位数组元素值,第二个为键名。如果提供了可选参数$userdata,则做为第三个参数
function show($val, $key) {
echo "lanuage $key $val" .PHP_EOL;
}
$array1 = array('php', 'java', 'C++');
array_walk($array1, 'show');
array_map() 、 array_filter() 和 array_walk()都可调用php内置函数,如base_convert('5', 10, 2);//101
print_r(array_map('strlen', array(1, 'abc', 'hi'))); //array(1, 3, 2)
原文:http://www.itokit.com/2012/0309/73288.html
转载请注明:阿尤博客 » PHP相似函数整理 ----- array_map() 、 array_filter() 、 array_walk()