Blogger Information
Blog 17
fans 1
comment 0
visits 20135
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP数组回调函数演示
大A
Original
651 people have browsed it

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.小猪
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:不错, 就是案例不是太好, 但目前你们暂时可能想不到更合适的可以理解
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