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个小组,一个班级中,学习最好的,不及格的,最好的有几个,不及格的有几个,去除插班生后的成绩
<?php
$arr1=['彭彭'=>50,'刘刘'=>61,'allen'=>75,'kd'=>85,'td'=>90,'cheng'=>0];
$arr2=['揪揪'=>73,'平平'=>46,'lbj'=>87,'kt'=>67,'mj'=>100,'qiu'=>''];
$arr3=['飞飞'=>85,'阿飞'=>53,'刘德华'=>99,'周星驰'=>99,'黎明'=>95,'kkkk'=>null];
$arr4=['吴彦祖'=>90,'陈冠希'=>86,'王祖贤'=>87,'张卫键'=>78,'张国荣'=>99];
$arr5=['李小龙'=>100,'成龙'=>98,'李连杰'=>98,'甄子丹'=>95,'叶问'=>100];
// printf('<pre>%s</pre>',print_r($arr1,true));
$res=array_merge($arr1,$arr2,$arr3,$arr4,$arr5);//将每个小组的合成一个数组
printf('<pre>%s</pre>',print_r($res,true));
$count=array_sum($res)/count($res);//全班的平均成绩
echo $res[1];
echo '平均成绩是'.$count;
echo '<hr>';
echo '成绩最高的是'.max($res);//求数组中的最高值
echo '******成绩最差的是'.min($res);//求数组的最小值
echo '<hr>';
$key=array_keys($res,99);
echo implode(',',$key);
echo '这几个很优秀的同学,在努力就可以得到满分了!';
static $cmd=array();
foreach($res as $key=>$value){
if($value==max($res)){
$cmd[]=$key;
}
}
$stu=implode(',',$cmd);
echo '<hr>';
echo '取得最好成绩的分别是'.$stu;//遍历数组,取出其中满分的同学并转为字符串打印输出
echo '<hr>';
static $cot=array();
$j=0;
foreach($res as $key=>$value){
if($value<60){
$j++;
$cot[]=$key;
}
}
$t=implode(',',$cot);
echo '不及格的同学有'.$j.'位','分别是:'.$t;////遍历数组,取出其中不及格的同学并转为字符串打印输出
echo '<hr>';
function text($var)
{
return $var==true;
}
$k=array_filter($res,"text");//使用回调函数去掉没有成绩的插班生,求出实际的平均成绩
$cut=array_sum($k)/count($k);//去除插班生的平均成绩
echo '去除插班生的平均成绩是'.$cut;
printf('<pre>%s</pre>',print_r($k,true));
?>
输出结果:
2.array_splice() 函数从数组中移除选定的元素,并用新元素取代它。函数也将返回被移除元素的数组。
语法:array_splice(array,start,length,array)
array | 必填,要处理的数组 |
---|---|
start | 必需。数值。规定删除元素的开始位置。 |
length,array | 选填,规定被移除的元素个数,也是被返回数组的长度,以及带有要插入原始数组中元素的数组 |
实例:修改数组中为false的数据
<?php
$arr = [150, 'php',true, null, false, '', 0, '0'];
foreach($arr as $key=>$value){
if($value==false){
array_splice($arr, $key,$key+1, ['此数据已更改,无法显示']);
}
}
echo '<hr>';
// $res=array_splice($arr, 2, [999]);
printf('更改后的元素: <pre>%s</pre><hr>', print_r($arr, true));
echo array_search(false,$arr);
输入结果:
3.array_map(): 为数组中的每个元素应用回调函数进行处理,返回新数组
实例:为不同的成绩评分
$res = [30, 4, 82, 15, 20, 'abc', 'hello', 2, 46];
$arr1=[92,85,100,71,39,52,63];
$arr2=['优秀','优','良','一般','及格','不及格','差'];
$arr3=rsort($arr1);
$res=array_map(function($value1,$value2){
return $value1.'----'.$value2;
},$arr1,$arr2);
printf('<pre>%s</pre><hr>', print_r($res, true));
输出结果: