php array_filter array_map,回调函数来处理数组:array_,map(),array_filter(),array_walk()

使用回调来处理数组

1,array_filter($arr,function($value){})将每个值传入回调,最终结果仅包括返回true 的元素,返回数组

2. array_walk($arr, function($value,$key[,$p]){},$p):将每个键值传入回调,返回布尔值

3. array_map(function(),$arr1[,arr2...]):对1个或多个数组回调处理,返回索引数组记录执行结果

array_filter();本意就是数组中那些元素留下哪些元素删除;也可以修改数组中的某个值因为是直接修改原数组的内容所以才 有传参<?php

$array = ['id'=>1020, 'name'=>'Peter Zhu', 'job'=>'lecture'];

$res=array_filter($array,function($values){

if($values=='Peter Zhu'){

return false;

}

return true;

});

echo '


';print_r($res);

$res1=array_filter($array,function(&$value){//备注;修改不了值

if($value=='Peter Zhu'){

$value='猪哥';

return true;

}

return true;

});

echo '


';

print_r($res1);

$arr1=['name'=>'ZhuGe','age'=>'28','sex'=>'woman','job'=>'teacher','salary'=>2000];

//array_walk()本意是在数组中漫步,走一遍,所以可以对每个键值对做一些个性化的处理

//遍历数组并加上指定的后缀

echo '


';

$re=array_walk($arr1,function($value,$key,$connect){

echo  $value.$connect.$key.'
';

},'***');

//array_walk()返回是布尔值,一定要注意,将输出结果写到回调中

//所以,array_walk()也可以完成array_filter()的过滤功能

//例如,过滤掉数组中键名为salary的数据,将结果中的键值对用=>进行连接

echo '


';

$ree=array_walk($arr1,function($value,$key,$connect){

if($key!='salary'){

echo $key.$connect.$value.'
';

}},'=>');

/** * array_map(function($val,$val,..){},$arr1,$arr2...)

* 1.本意是数组映射

* 2. 回调的参数的数量与要处理的数组数量一致

* 3. 要处理的数组,其元素数量要相同,否则短的数组会被填充空值 *

*4. 如果回调为null,则将多个数组组成一个多维数组

*5. 处理的是值,与键名无关

*6. 返回的是处理过的索引数组

*/$age=[12,24,56,13,27,17,59];

//单数组:创建年龄数组,对每个值进行判断是否成年?

$a=array_map(function($value){

if($value<18){

return '未成年';

} return '成年了';

},$age);

echo '


';print_r($age);

echo '


';print_r($a);

//双数组:创建二个数组,一个是当做键名,一个当做值,并过滤掉键名为sex,age,salary的敏感数据

$key = ['id','name','sex','age','address','salary','job'];

$value = [1020,'Peter Zhu','male',99,'合肥',5000,'讲师'];

$res2=array_map(function($key,$value){

if(!in_array($key,['sex','age','salary'])){

return $value;

}},$key,$value);

echo '


';

print_r(array_values(array_filter($res2)));

$name=['id','name','email'];

$value=[4,'杨过','YangG@qq.com'];

echo '


';

$res3=array_map(null,$name,$value);

print_r($res3);

//输出的是一个二维数组

echo '


';

foreach($res3 as $value){

list($key,$val)=$value;

echo $key,'是',$val,'
';}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值