博客列表 >PHP数组回调函数演示

PHP数组回调函数演示

大A
大A原创
2020年04月27日 02:20:36650浏览

1. array_fliter

定义

返回的是新数组,原数组不变
它的作用是每次传入一个元素到回调函数内进行判断,把返回true的保存到新数组中
新数组和原数组的数组长度可能不一样

语法

array_filter(array,func,[flag])

参数 描述
array 必须,规定使用的数组
func 必须,用于过滤数组的回调函数,返回值是布尔型
flag 可选,决定func接收的参数形式
ARRAY_FILTER_USE_KEY 接受键名作为的唯一参数
ARRAY_FILTER_USE_BOTH 同时接受键名和键值

例子

  1. $array=['aes1','aes2','a'=>'a3','y2'=>'aes4','a5','aes'=>'ab6'];
  2. //如果键值内容包含指定的字符串返回true
  3. function func($var){
  4. if (strpos($var,'aes')===false):
  5. return false;
  6. else:
  7. return true;
  8. endif;
  9. }
  10. $arr=array_filter($array,"func");
  11. printf('<pre>%s</pre><hr>',print_r($arr,true));
  12. //只对键名进行过滤
  13. $arr=array_filter($array,"func",ARRAY_FILTER_USE_KEY);
  14. printf('<pre>%s</pre><hr>',print_r($arr,true));
  15. -------------------------------
  16. //输出结果
  17. Array
  18. (
  19. [0] => aes1
  20. [1] => aes2
  21. [y2] => aes4
  22. )
  23. Array
  24. (
  25. [aes] => ab6
  26. )

2. array_map

定义

返回的是新数组,原数组不变
它的作用是每次传入一个元素到回调函数内,把回调函数的返回值存入到新数组内,可以多个数组同时传入
新数组和原数组的数组长度应该一样

语法

array_map( func, array1,[array2...])

参数 描述
func 必须,用于接收数组的回调函数,可以自定义返回值,返回值会存入新数组
array1 必须,规定使用的数组
array... 可选,规定使用的数组

例子

  1. $array1=['孙悟空','猪八戒','沙和尚','唐生'];
  2. $array2=['金箍棒','九齿钉耙','月牙铲','九锡禅杖'];
  3. function func($a,$b)
  4. {
  5. return '<font color="red">'.$a.'</font>使用的兵器是<font color="gray">'.$b.'</font>';
  6. }
  7. $arr=array_map("func",$array1,$array2);
  8. printf('<pre>%s</pre><hr>',print_r($arr,true));
  9. -------------------------------
  10. //输出结果
  11. Array
  12. (
  13. [0] => 孙悟空使用的兵器是金箍棒
  14. [1] => 猪八戒使用的兵器是九齿钉耙
  15. [2] => 沙和尚使用的兵器是月牙铲
  16. [3] => 唐生使用的兵器是九锡禅杖
  17. )

3. array_walk

定义

返回布尔值,如果要改变数组元素的值,回调函数第一个参数必须是引用
arrary_walk 的回调函数能够接收数组的键名

语法

array_walk(array,func,[data])

参数 描述
array 必须,规定使用的数组
func 必须,用于接收数组元素的回调函数,参数1键值,参数2键名,参数3data
data 可选,传入func的第三个参数

例子

  1. $array = [
  2. 'a' => ['title' => '推荐', 'code' => 1],
  3. 'b' => ['title' => '搞笑', 'code' => 1],
  4. 'c' => ['title' => '奇闻', 'code' => 2]
  5. ];
  6. //修改数组键名为'a'和'c'的元素内'code'的值
  7. function func(&$a, $b, $c)
  8. {
  9. switch ($b):
  10. case 'a';
  11. $a['code'] = $c;
  12. break;
  13. case 'c';
  14. $a['code'] = 123;
  15. endswitch;
  16. }
  17. array_walk($array, "func", 789);
  18. printf('<pre>%s</pre><hr>', print_r($array, true));
  19. -------------------------------
  20. //输出结果
  21. Array
  22. (
  23. [a] => Array
  24. (
  25. [title] => 推荐
  26. [code] => 789
  27. )
  28. [b] => Array
  29. (
  30. [title] => 搞笑
  31. [code] => 1
  32. )
  33. [c] => Array
  34. (
  35. [title] => 奇闻
  36. [code] => 123
  37. )
  38. )

4.array_reduce

定义

发送数组中的值到用户自定义函数,并返回一个字符串
如果数组是空的或者初始值未传递,该函数返回 NULL

语法

array_reduce(array,func,[data])

参数 描述
array 必需,规定数组
func 必需,规定函数的名称,参数1,首次调用可接收int的值,之后接收函数自身返回值,参数2,数组的键值
data 可选,规定发送到函数处理的第一个值

例子

  1. $array = ['张三','李四','王五','豆豆','杨杨','小花','小猪'];
  2. function func($a, $b)
  3. {
  4. global $int;
  5. $int++;
  6. return $a.$int.'.'.$b.'<br>';
  7. }
  8. $arr=array_reduce($array, "func");
  9. printf('<pre>%s</pre><hr>', print_r($arr, true));
  10. -------------------------------
  11. //输出结果
  12. 1.张三
  13. 2.李四
  14. 3.王五
  15. 4.豆豆
  16. 5.杨杨
  17. 6.小花
  18. 7.小猪
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议