美文网首页
php数组之函数处理

php数组之函数处理

作者: ysp123 | 来源:发表于2019-07-22 00:32 被阅读0次

    1、array_reduce( arr , callablecallback ) 使用回调函数迭代地将数组简化为单一的值。其中arr 为输入数组,callback(result ,value)接受两个参数,result为上一次迭代产生的值,value是当前迭代的值。

    //数组求和
    $arr = [1,2,3,4,5];
    $sum = array_reduce($arr, function($result, $value){
        return $result+$value;
    });
    echo $sum;
    
    //字符串拼接
    $arr = [
        ['id'=>1,'name'=>"c"],
        ['id'=>2,'name'=>"b"],
        ['id'=>3,'name'=>"a"]
    ];
    $str = array_reduce($arr, function($result, $value){
        return $result.",".$value['id'];
    });
    echo $str;
    

    2、array_map(callback callback ,arr) 返回用户自定义函数作用后的数组。回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
    向array_map传入数组,出来的还是数组,而不是上面array_reduce()的一个值。所以,array_map()最简单的就是把callback函数作用到每个数组的值上,最常见的场景就是 intval()、trim() 数组中的值.

    $arr = array('2','3','4','5');
     
    array_map('intval' , $arr);
    array_map('htmlspecialchars' , $arr);
    

    3、array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。处理二维数组用array_walk_recursive函数。

    $arr = ["aa", "bb"];
    array_walk($arr, function(&$item){
              $item = $item."ppp";
              return $item;
    });
    var_dump($arr);  //["aappp","bbppp"]
    

    4、array_filter ( array array [, callablecallback [, int $flag = 0 ]] ) 依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
    array_filter会过滤掉任何值等于FALSE的值,也就是说 0值,空字符串,null,都会被过滤。

    $arr = array(1,2,3,'aaa'=>4,5);
    
    $newArr = array_filter($arr,function($val) {
    if ($val%2 == 0) {
    return false; 
    }
    return true;
    });
    var_dump($newArr);   //[1,3,5]
    

    相关文章

      网友评论

          本文标题:php数组之函数处理

          本文链接:https://www.haomeiwen.com/subject/pvublctx.html