博客列表 >使用array_filter()、array_walk()、array_map() 三个回调函数来处理数组

使用array_filter()、array_walk()、array_map() 三个回调函数来处理数组

LIWEN的博客
LIWEN的博客原创
2018年01月09日 15:07:42758浏览
<?php
/**
 * 使用回调函数来处理数组
 */
header('Content-Type:text/html; charset=UTF-8');
//1、array_filter($arr,function(){})函数:将每个值取出,传入回调函数,进行处理,返回结果为true的元素
$array = [1,0,4,18,'',2,2,6,18,33,'',null];

echo '<pre>';
//1.1 用于处理掉数组中的空元素/0元素/null元素
$res1 = array_filter($array,function ($value){
    return $value;
});
print_r($res1);
//1.2 用于删除指定的值,如删除数组中等于2的元素,并将键值重置(使用array_values()函数重置键值)
$res2 = array_filter($array,function ($val){
    if ($val == 2){
        return false;
    }else{
        return $val;
    }
});
print_r(array_values($res2));

//2、array_walk($arr,function($value,$key){})函数:将每个键值对出入到回调函数中处理,返回处理结果为true的元素
//2.1 用于为每个值添加后缀
$suffix = 'www.php.cn';
array_walk($array,function ($value,$key,$suffix){
    echo $key.'=>'.$value.$suffix.'<br>';
},$suffix);
//2.2 用于过滤掉数组中符合条件的元素,并将结果中的键值对格式化输出
$connector = '----';
array_walk($array,function ($value,$key,$connector){
    if ($value == 2){
        return false;
    }else{
        echo $key.$connector.$value.'<br>';
    }
},$connector);

//3、array_map(function($val1[,$val2...]){},$arr1[,$arr2,$arr3...])函数:对一个或多个数组进行回调处理
//3.1 处理单数组
$age = [13,45,15,55,32];
$res3 = array_map(function ($value){
    if ($value<18){
        return '<span style="color: red">未成年</span>';
    }else{
        return $value;
    }
},$age);
print_r($res3);
// 3.2 处理双数组
$key = ['id','name','email','sex'];
$value =['1001','kiki','kiki@php,cn','female'];
//过滤敏感元素sex,并拼接两个数组
$res4 = array_map(function ($key,$value){
    if ($key != 'sex'){
        return $key.'---'.$value.'<br>';
    }else{
        return false;
    }
},$key,$value);
print_r(array_filter(array_values($res4)));


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议