php知识总结

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 )
上一篇 下一篇

猜你喜欢

热点阅读