Blogger Information
Blog 61
fans 0
comment 0
visits 62882
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
使用array_filter()、array_walk()、array_map() 三个回调函数来处理数组
Pengsir
Original
603 people have browsed it
<?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

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post