计划,每天学习两小时,坚持带来大改变。

PHP相似函数整理 ----- array_map() 、 array_filter() 、 array_walk()

PHP 阿尤 1589浏览 0评论

函数  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()

游客
发表我的评论 换个身份
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  • 验证码 (必填)点击刷新验证码