博客列表 >数组及其函数的理解

数组及其函数的理解

混混
混混原创
2020年05月20日 00:02:48809浏览

1.数组是以键值对的形式存放在内存值,可以存放多个元素,有一维数组和多维数组的形式。

(1)数组的遍历一般使用循环的方法,主流使用foreach()函数更加简洁方便。
(2)数组可以存放多种元素,但是返回输出一般是为true的元素组成的数组,null,0,’’,false 这些都是返回false。

数组函数的运用:
array_merge():将多个数组合成一个数组
语法:array_merge(array1,array2,array3…)

max():返回数组中最大的值
语法:max(array);

min():返回数组中最小的值
语法:min(array)

array_keys():返回数组值得键
语法:array_keys(array,value,strict)//第一个参数必填,第二个参数为要查询的值,第三个为可能的值。

array_filter():用回调函数过滤数组中的元素。

实例:
统计5个小组,一个班级中,学习最好的,不及格的,最好的有几个,不及格的有几个,去除插班生后的成绩

  1. <?php
  2. $arr1=['彭彭'=>50,'刘刘'=>61,'allen'=>75,'kd'=>85,'td'=>90,'cheng'=>0];
  3. $arr2=['揪揪'=>73,'平平'=>46,'lbj'=>87,'kt'=>67,'mj'=>100,'qiu'=>''];
  4. $arr3=['飞飞'=>85,'阿飞'=>53,'刘德华'=>99,'周星驰'=>99,'黎明'=>95,'kkkk'=>null];
  5. $arr4=['吴彦祖'=>90,'陈冠希'=>86,'王祖贤'=>87,'张卫键'=>78,'张国荣'=>99];
  6. $arr5=['李小龙'=>100,'成龙'=>98,'李连杰'=>98,'甄子丹'=>95,'叶问'=>100];
  7. // printf('<pre>%s</pre>',print_r($arr1,true));
  8. $res=array_merge($arr1,$arr2,$arr3,$arr4,$arr5);//将每个小组的合成一个数组
  9. printf('<pre>%s</pre>',print_r($res,true));
  10. $count=array_sum($res)/count($res);//全班的平均成绩
  11. echo $res[1];
  12. echo '平均成绩是'.$count;
  13. echo '<hr>';
  14. echo '成绩最高的是'.max($res);//求数组中的最高值
  15. echo '******成绩最差的是'.min($res);//求数组的最小值
  16. echo '<hr>';
  17. $key=array_keys($res,99);
  18. echo implode(',',$key);
  19. echo '这几个很优秀的同学,在努力就可以得到满分了!';
  20. static $cmd=array();
  21. foreach($res as $key=>$value){
  22. if($value==max($res)){
  23. $cmd[]=$key;
  24. }
  25. }
  26. $stu=implode(',',$cmd);
  27. echo '<hr>';
  28. echo '取得最好成绩的分别是'.$stu;//遍历数组,取出其中满分的同学并转为字符串打印输出
  29. echo '<hr>';
  30. static $cot=array();
  31. $j=0;
  32. foreach($res as $key=>$value){
  33. if($value<60){
  34. $j++;
  35. $cot[]=$key;
  36. }
  37. }
  38. $t=implode(',',$cot);
  39. echo '不及格的同学有'.$j.'位','分别是:'.$t;////遍历数组,取出其中不及格的同学并转为字符串打印输出
  40. echo '<hr>';
  41. function text($var)
  42. {
  43. return $var==true;
  44. }
  45. $k=array_filter($res,"text");//使用回调函数去掉没有成绩的插班生,求出实际的平均成绩
  46. $cut=array_sum($k)/count($k);//去除插班生的平均成绩
  47. echo '去除插班生的平均成绩是'.$cut;
  48. printf('<pre>%s</pre>',print_r($k,true));
  49. ?>

输出结果:


2.array_splice() 函数从数组中移除选定的元素,并用新元素取代它。函数也将返回被移除元素的数组。

语法:array_splice(array,start,length,array)

array 必填,要处理的数组
start 必需。数值。规定删除元素的开始位置。
length,array 选填,规定被移除的元素个数,也是被返回数组的长度,以及带有要插入原始数组中元素的数组

实例:修改数组中为false的数据

  1. <?php
  2. $arr = [150, 'php',true, null, false, '', 0, '0'];
  3. foreach($arr as $key=>$value){
  4. if($value==false){
  5. array_splice($arr, $key,$key+1, ['此数据已更改,无法显示']);
  6. }
  7. }
  8. echo '<hr>';
  9. // $res=array_splice($arr, 2, [999]);
  10. printf('更改后的元素: <pre>%s</pre><hr>', print_r($arr, true));
  11. echo array_search(false,$arr);

输入结果:


3.array_map(): 为数组中的每个元素应用回调函数进行处理,返回新数组

实例:为不同的成绩评分

  1. $res = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];
  2. $arr1=[92,85,100,71,39,52,63];
  3. $arr2=['优秀','优','良','一般','及格','不及格','差'];
  4. $arr3=rsort($arr1);
  5. $res=array_map(function($value1,$value2){
  6. return $value1.'----'.$value2;
  7. },$arr1,$arr2);
  8. printf('<pre>%s</pre><hr>', print_r($res, true));

输出结果:


总结:没有使用过太多的数组函数,不知道运用场景,不能举例说明,看手册可以看懂,但大部分都不知道如何运用!

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