博客列表 >PHP 数组函数

PHP 数组函数

晴天
晴天原创
2020年04月27日 17:37:47844浏览

1.四个数组会调函数

1.1 array_filter 用回调函数过滤数组中的单元

  • 把输入数组中的每个键值传给回调函数,如果返回 true 则存入另一个数组中,数组键名保持不变
  1. ## array_filter
  2. // 返回数组中后缀名为.jpg 的图片
  3. $image = ['web.png','name.gif','item.jpg','kk.pgf','vv.jpg'];
  4. $image = array_filter($image,function($arr){
  5. return pathinfo($arr)['extension'] === 'jpg';
  6. });
  7. print_r($image);
  8. // 输出 Array ( [2] => item.jpg [4] => vv.jpg )
  9. // 索引进行重排
  10. sort($image);
  11. print_r($image);
  12. // 输出 Array ( [0] => item.jpg [1] => vv.jpg )

1.2 arrtay_map 为数组的每个元素应用回调函数进行处理,返回新数组

  • 该函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
  • 可以传递多个数组,回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
  1. ## array_map
  2. // 将数组进行拉平
  3. $res = [[1,2,3],1,2,(new class{public $name='中国'; public $gps='亚洲';})];
  4. // printf('<pre>%s</pre>',print_r($res,true));
  5. $arr = array_map(function($item){
  6. switch (gettype($item)) {
  7. case 'object':
  8. $item = get_object_vars($item);
  9. case 'array':
  10. $item =implode(',',$item);
  11. }
  12. return $item;
  13. },$res);
  14. printf('<pre>%s</pre>',print_r($arr,true));
  15. // 输出 Array
  16. // (
  17. // [0] => 1,2,3
  18. // [1] => 1
  19. // [2] => 2
  20. // [3] => 中国,亚洲
  21. // )

1.3 array_work 使用用户自定义函数对数组中的每个元素做回调处理

  1. // array_walk()
  2. $res =['id'=>'101','name'=>'machael','age'=>'15'];
  3. array_walk($res,function($item,$key){
  4. echo $key .' = '.$item .'<br>';
  5. });
  6. // 输出
  7. // id = 101
  8. // name = machael
  9. // age = 15

1.4 array_reduce 发送数组中的值到用户自定义函数,并返回一个字符串

  1. ## array_reduce
  2. $arr = null;
  3. $arr[] = ['id'=>'101','name'=>'machael','age'=>'15'];
  4. $arr[] = ['id'=>'102','name'=>'mach','age'=>'16'];
  5. $arr[] = ['id'=>'103','name'=>'maael','age'=>'18'];
  6. // printf('<pre>%s</pre>',print_r($arr,true))
  7. // 获取当期二维数组中每个id的值
  8. $arr = array_reduce($arr,function($res,$item){
  9. return $res.','.$item['id'];
  10. });
  11. printf('<pre>%s</pre>',print_r($arr,true));
  12. //输出结果 ,101,102,103
  13. // 求和
  14. $num = [1,2,3,4];
  15. $sum = array_reduce($num,function($a,$b){
  16. return $a + $b;
  17. });
  18. printf('<pre>%s</pre>',print_r($sum,true));
  19. // 输出结果 10
  20. // 合并两个数组
  21. $a = ['name','id','password'];
  22. $b = ['machiel','101','123456'];
  23. // 合并
  24. $res = array_map(function($arr_a,$arr_b){
  25. return [$arr_a => $arr_b];
  26. },$a,$b);
  27. // 二维转一维
  28. $res = array_reduce($res,function($arr,$item){
  29. $key = key($item);
  30. $current = current($item);
  31. $arr[$key] = $current;
  32. return $arr;
  33. });
  34. printf('<pre>%s</pre>',print_r($res,true));
  35. // 输出 Array
  36. // (
  37. // [name] => machiel
  38. // [id] => 101
  39. // [password] => 123456
  40. // )

2. 查询与替换

2.1 array_slice 从数组中取出一部分

  1. // array_slice()
  2. // array_slice(数组名,索引‘从0开始’,步长,是否保留原键名默认flase不保存)
  3. $arr = ['red','green','yellow','blank','blue'];
  4. // 取出第三个
  5. $slice = array_slice($arr,2,1,true);
  6. print_r($slice);
  7. // 输出 Array ( [2] => yellow )

2.2 array_splice 去掉数组中一部分并用其他值代替

  1. // array_splice()
  2. // array_splice(数组名,索引,步长,替换值)
  3. // 将第一个替换为white
  4. array_splice($arr,0,1,'white');
  5. printf('<pre>%s</pre>',print_r($arr,true));
  6. // 输出
  7. // Array
  8. // (
  9. // [0] => white
  10. // [1] => green
  11. // [2] => yellow
  12. // [3] => blank
  13. // [4] => blue
  14. // )

3.总结

array_filter 重点在于过滤某个元素,返回过滤后的数组
array_walk 遍历数组进行某种操作
array_map 遍历一个或多个数组,返回一个新数组,函数在前,可以放入多个数组

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