/**

* array_filter 用回调函数处理数组中的各个元素,
* 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时,
* 如果返回了false,那么这个元素将会被过滤掉。PS:保持了原来的索引。
*/
$arr = array(1,2,3,'aaa'=>4,5);

$newArr = array_filter($arr,function($val) {
if ($val == 3) {
return false; // 返回false 这个元素将要被过滤掉
}
return true; //保留的元素
});

print_r($newArr);

/**
array_map 函数势必比array_walk要更常用,因为php内置函数默认就是传的值而不是引用,
那么你使用内置函数如:intval() strtolower()。。的时候walk就无能为力了
* array_map 用回调函数处理数组中的各个元素,
* 在函数中你可以改变各个元素的值,
* 重点在你需要什么样的值就返回什么样的值,保持索引。
可以一次性处理多个数组。但是数组的数量应该与回调函数的参数保持一致
*/
$arr = array(1,2,3,'aaa'=>4,5);

$newArr = array_map(function($val) {
if ($val == 3) {
$val *= $val;
}
return $val; //这里是改变过的值,可以返回给新的数组

},$arr);

print_r($newArr);

/**
* ps : 如果处理的数组不是二维,可以用array_map进行取代
* 处理二维数组用array_walk_recursive函数,
* 在处理一维数组时,但是或许array_walk函数因为是传引用,处理大数组时效率或许会比array_map高呢?
* array_walk 用回调函数处理数组中的各个元素,
* 此函数返回bool。所以需要配合引用传值直接改变原数组才有一定的功效。
*/

//摘自手册 只有 array 的值才可以被改变,用户不应在回调函数中改变该数组本身的结构。
//例如增加/删除单元,unset 单元等等。
$arr = array(1,2,3,'aaa'=>4,5);

array_walk($arr,function(&$val,$key) {
if ($val == 3) {
echo $key.'<br/>';
$val = 33333;
}
});

print_r($arr);

最新文章

  1. 第二天ci项目规划 前后台分离
  2. 2016-2017 ACM-ICPC, NEERC, Northern Subregional Contest
  3. spring-data-elasticsearch整合elasticsearch
  4. jquery只能输入数字方法
  5. Android 动画特效
  6. geeksforgeeks@ Largest Number formed from an Array
  7. 精简版、GHOST版win7,arduino驱动安装失败的解决方法分享
  8. nginx查看日志
  9. Scroll View 控件以Thumbnail的方式显示一个目录的全部图片,相似图片浏览器
  10. python 练习 simple_server 判断路径及返回函数
  11. bzoj1009 KMP+矩阵dp
  12. Java Spring MVC 错误 及 常见问题 总结
  13. 网站加入QQ在线客服
  14. windows下特殊字符无法用来命名
  15. sparklyr-R语言访问Spark的另外一种方法
  16. data型怎么转换格式
  17. HDU-4539郑厂长系列故事——排兵布阵(状态压缩,动态规划)
  18. Java泛型学习二
  19. counting elements--codility
  20. Linux -- 用户篇

热门文章

  1. 怎么解析json串在.net中
  2. C#多种方式获取文件路径
  3. 【SQL】靠谱的TRIM函数,附赠过程一枚
  4. .Net 高效开发之不可错过的实用工具(转)
  5. 简单的mysql查询
  6. Atitit.js javascript的rpc框架选型
  7. java集合-Iterator迭代
  8. 今天做项目时,用到了好多关于js的知识点,有的忘记了,然后晚上回来自己整理一番,明天继续整理。哈哈,分享给大家。
  9. 如何向github上传文件
  10. mysql整数字段 int bigint smallint tinyint