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

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

Pengsir
Pengsir原创
2018年01月10日 19:57:21598浏览
<?php
/*
 * 使用回调来处理数组
 * 1.array_filter($arr,function($value){}):将每个值传入回调,最终结果仅包括返回true的元素,返回数组
 * 2.array_walk($arr,function($value,$key,[$p]{},$p):将每个键值传入回调,返回布尔值
 * 3.array_map(function ($v1,$v2){},$arr1,$arr2...):对1个或多个数组回调处理,返回索引数组记录执行结果
 */
header('content-type:text/html;charset=utf-8');
$array=['id'=>520,'name'=>'peng','job'=>'inter'];
//1.把数组中'name'=>'peng'的数据删除
$res=array_filter($array,function ($value){
    if($value=='peng'){
        return false;
    }
    return true;
});
echo '<pre>';
print_r($res);
echo '<hr>';
//1.2.把原来数组中的参数改变,需要用引用传参的方式  在参数$value中前面加个&符(&$value)把'job'=>'teacher'
$res=array_filter($array,function(&$value){
    if($value=='inter'){
        $value='teacher';
    }
    return true;
});
print_r($res);

//2、array_walk($arr,function($value,$key,[$p]{},$p)函数:将每个键值对出入到回调函数中处理,返回处理结果为true的元素
$suffix='www.php.cn';
array_walk($array,function ($value,$key,$suffix){
    echo $key.'=>'.$value.'('.$suffix.')'.'<br>';
},$suffix);
echo '<br>';

//2.1 array_walk()过滤数组中键名等于id的数据,将结果中的健值对用***进行连接
$connect='***';
array_walk($array,function ($value,$key,$connect){
    if($key!=='id'){
        echo $key.$connect.$value.'<br>';
    }
},$connect);

//3.array_map(function ($v1,$v2){},$arr1,$arr2...):对1个或多个数组回调处理,返回索引数组记录执行结果
//要求判断18岁以下为未成年
$age=[13,14,12,40];
$res1=array_map(function ($value){
    if($value< '18'){
        return '<span style="color: red">未成年</span>';
    }
    return '<span style="color: #c1e2b3">成年</span>';
},$age);
print_r($res1);
echo '<hr>';

//3.2 双数组
$key=['id','name','sex','age','address','salary','job'];
$value=[1020,'Peter Zhu','male',99,'合肥',9988,'讲师'];
//过滤掉敏感数组,sex,age,salary//3.2 双数组
$res2=array_map(function ($key,$value){
    if(!in_array($key,['sex','age','salary'])){
        return $value;
    }
},$key,$value);
print_r(array_values(array_filter($res2)));//过滤空字符串且并重排了序

//3.3 回调函数为null,返回一个多维数组
$name = ['id','name','lesson'];
$value = [666,'JS','PHP'];
$res3=array_map(null,$name,$value);
echo '<hr>';
foreach ($res3 as $value){
    list($key,$val)=$value;
    echo $key,'是',$val.'<br>';
}

图:

结果图.png

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