博客列表 >数组及数组函数示例

数组及数组函数示例

ROC-Y
ROC-Y原创
2020年05月04日 16:38:39634浏览

数组定义与函数

  1. <?php
  2. $students = [];
  3. $students[] = ["学号"=> 10000 ,"姓名"=>'张三',"语文"=>80,"数学"=>50,"英语"=>90];
  4. $students[] = ["学号"=> 10001 ,"姓名"=>'小明',"语文"=>80,"数学"=>90,"英语"=>70,"备注"=>"跳级"];
  5. $students[] = ["学号"=> 10002 ,"姓名"=>'韩梅',"语文"=>90,"数学"=>80,"英语"=>90];
  6. //printf('<pre>%s</pre>',print_r($students,true));
  7. //从数组中取出一部分
  8. //function array_slice (array $array, $offset, $length = null, $preserve_keys = false) {}
  9. print_r (array_slice($students[1],1,2));
  10. echo '<br>';
  11. print_r (array_slice($students[1],3,-1));
  12. echo '<br>';
  13. //替换
  14. //function array_splice (array &$input, $offset, $length = null, $replacement = null) {}
  15. //得到被去掉的数组
  16. $array1 = array_splice($students[2],2,3,[70,85,95]);
  17. print_r($array1);
  18. echo '<br>';
  19. //被替换后的数组,替换部分的键名会被重置
  20. printf('<pre>%s</pre>',print_r($students,true));
  21. echo '<br>';

  1. //计算数组的交集,只比较值,
  2. //function array_intersect(array $array1, array $array2, array $_ = null) { }
  3. $array2 = array_intersect($students[0],$students[1]);
  4. print_r($array2);
  5. echo '<br>';
  6. //计算数组的交集,值和键名都比较,
  7. //function array_intersect_assoc(array $array1, array $array2, array $_ = null) { }
  8. $array3 = array_intersect_assoc($students[0],$students[1]);
  9. print_r($array3);
  10. echo '<br>';
  11. //计算数组的差集
  12. $array4 = array_diff($students[0],$students[1]);
  13. print_r($array4);
  14. echo '<br>';
  15. //计算数组的差集,值和键名一起比较
  16. $array5 = array_diff_assoc($students[0],$students[1]);
  17. print_r($array5);
  18. echo '<br>';
  19. //数组合并,相同键名直接覆盖
  20. $array6 = array_merge($students[0],$students[1]);
  21. print_r($array6);
  22. echo '<br>';
  23. //与键相关
  24. //获取所有键名组成的数组
  25. $array7 = array_keys($students[0]);
  26. print_r($array7);
  27. echo '<br>';
  28. //是否存在指定键名
  29. echo array_key_exists("语文",$students[1]);
  30. echo '<br>';
  31. var_dump (array_key_exists("备注1",$students[1]));
  32. echo '<br>';
  33. //获取第一个键名,最后一个键名
  34. echo array_key_first($students[1]);
  35. echo '<br>';
  36. echo array_key_last($students[1]);
  37. echo '<br>';
  38. //从数组中随机取出一个或者多个元素,得到键名
  39. print_r (array_rand($students[1],2));

回调函数

array_filter()

  • 该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回给结果数组。数组键名保持不变。
  1. <?php
  2. $student = ["学号"=> 10000 ,"姓名"=>'张三',"语文"=>80,"数学"=>50,"英语"=>90];
  3. //返回 成绩,0-100数字
  4. function num($input){
  5. return $input>0 && $input<=100;
  6. }
  7. // array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
  8. $array8 = array_filter($student ,"num");
  9. print_r($array8);

array_map()

  • 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新的值的数组。可以向函数输入一个或者多个数组。
  1. <?php
  2. $student = ["学号"=> 10000 ,"姓名"=>'张三',"语文"=>80,"数学"=>50,"英语"=>90];
  3. //给每一科的分数都加10分
  4. function num($input){
  5. if ($input>0 && $input<=100){
  6. $input +=10;
  7. };
  8. return $input;
  9. }
  10. //function array_map($callback, array $arr1, array $_ = null) { }
  11. $array9 = array_map("num",$student);
  12. print_r($array9);

  1. <?php
  2. $student = ["学号"=> 10000 ,"姓名"=>'张三',"语文"=>80,"数学"=>50,"英语"=>90];
  3. $student2 = ["学号"=> 10002 ,"姓名"=>'韩梅',"语文"=>90,"数学"=>80,"英语"=>90];
  4. //多个数组,比较相同元素
  5. function num($v1,$v2){
  6. if($v1 === $v2 ){
  7. return "same";
  8. }else {
  9. return "diff";
  10. }
  11. }
  12. print_r(array_map("num", $student, $student2));

array_reduce()

  • 函数发送数组中的值到用户自定义函数,并返回一个字符串。如果数组是空的或者初始值未传递,该函数返回 NULL。
  1. <?php
  2. //给reduce去使用叠加*10
  3. function to10($x, $y){
  4. return $x * 10 + $y;
  5. }
  6. //给map去使用通过字符串作为键,获取int值
  7. function char2num($s) {
  8. $DIGITS = ['0'=> 0, '1'=> 1, '2'=> 2, '3'=> 3, '4'=> 4, '5'=>5, '6'=> 6, '7'=> 7, '8'=>8, '9'=> 9];
  9. return $DIGITS[$s];
  10. }
  11. //字符串转换为数组
  12. function str2int($s){
  13. $array = str_split($s,1);
  14. return array_reduce( array_map("char2num", $array) ,"to10" );
  15. }
  16. var_dump (str2int("1314520"));

array_walk()

  • 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。
  • 可以通过把用户自定义函数中的第一个参数指定为引用:&$value,来改变数组元素的值
  1. <?php
  2. //将满足条件的值清0
  3. function myfunction(&$value,$key)
  4. {
  5. if ($value>0 && $value<=100){
  6. $value = 0;
  7. }
  8. }
  9. //重置学生的分数,不改变键名
  10. $students = ["学号"=> 10000 ,"姓名"=>'张三',"语文"=>80,"数学"=>50,"英语"=>90];
  11. array_walk($students,"myfunction");
  12. print_r($students);
  13. ?>

总结

  • 数组可以通过数组函数,快速的增删改查,也可以和字符串相互转换
  • 回调函数,可以将函数作用在数组上,实现将数组元素改变成为我们想要的内容。
  • 根据数组函数的作用,将函数分类,方便对比记忆。
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议