array_map、array_filter
2021-06-25 本文已影响0人
响呼雷
/**
* array_map:为数组的每个元素应用回调函数
*/
//示例1:数字索引数组
$a = [1,2,3,4,5];
$b = array_map(function ($v){
return $v * 2;
},$a);
print_r($b);
//结果
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
//示例2:字符串索引数组
$a = ['a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5];
$b = array_map(function ($v){
return $v * 2;
},$a);
print_r($b);
//结果
Array ( [a] => 2 [b] => 4 [c] => 6 [d] => 8 [e] => 10 )
//示例3:一个数组切回调函数为null时
$a = [1,2,3,4,5];
$b = array_map(null,$a1);
print_r($b);
//结果
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
//示例4:多个数组切回调函数为null时
$a1 = [1,2,3,4,5];
$a2 = ['a'=>'a','b'=>'b','c'=>'c','d'=>'d','e'=>'e','f'=>'f'];
//$a2 = ['a','b','c','d','e','f']; 结果是一样的
$b = array_map(null,$a1,$a2);
print_r($b);
//结果
Array ( [0] => Array ( [0] => 1 [1] => a )
[1] => Array ( [0] => 2 [1] => b )
[2] => Array ( [0] => 3 [1] => c )
[3] => Array ( [0] => 4 [1] => d )
[4] => Array ( [0] => 5 [1] => e )
[5] => Array ( [0] => [1] => f )
)
//示例5:二维数组
$a = [
["user_id" => 1,"name" => "Tom"],
["user_id" => 2,"name" => "Eve"],
];
$b = array_map(function ($item){
$item['age'] = 18;
$item['name'] .= "--boy";
return $item;
},$a);
print_r($b);
//结果
Array ( [0] => Array ( [user_id] => 1 [name] => Tom--boy [age] => 18 ) [1] => Array ( [user_id] => 2 [name] => Eve--boy [age] => 18 ) )
/**
* array_filter:回调函数过滤数组的元素
*/
//示例1:过滤是不是字符串
$a = [1,'x',2,3,'v',4,5,'c'];
$b = array_filter($a,function ($v){
if (is_string($v)){
return true;
}
return false;
});
print_r($b);
//结果
Array ( [1] => x [4] => v [7] => c )
//示例2:过滤是不是数字
$a = ['a'=>'a','b'=>'b','c'=>3,'d'=>4,'e'=>5];
$b = array_filter($a,function ($v){
if (is_numeric($v)){
return true;
}
return false;
});
print_r($b);
//结果
Array ( [c] => 3 [d] => 4 [e] => 5 )
//示例3:不使用回调函数时
$a = [1,null,2,3,0,4,5,false,'x'];
$b = array_filter($a);
print_r($b);
//结果
Array ( [0] => 1 [2] => 2 [3] => 3 [5] => 4 [6] => 5 [8] => x )