php 二维数组筛选问题?

$arr = array(
array('id'=>'1','姓名'=>'小白','性别'=>'男','总分'=>75,'班级'=>'1'),
array('id'=>'2','姓名'=>'小黑','性别'=>'男','总分'=>76,'班级'=>'1'),
array('id'=>'3','姓名'=>'小明','性别'=>'女','总分'=>77,'班级'=>'1'),
array('id'=>'4','姓名'=>'小光','性别'=>'女','总分'=>80,'班级'=>'1'),
array('id'=>'5','姓名'=>'小草','性别'=>'女','总分'=>82,'班级'=>'1'),
array('id'=>'6','姓名'=>'小丽','性别'=>'男','总分'=>90,'班级'=>'1'),
array('id'=>'7','姓名'=>'小红','性别'=>'男','总分'=>90,'班级'=>'1'),
array('id'=>'8','姓名'=>'小蓝','性别'=>'男','总分'=>84,'班级'=>'1'),

);
此为二维数组:
要求:第一步:筛选出男生。第二步:求出总分最高分。第三步:确定该生姓名。

请给位高手给予解答。

<?php
$arr = array(
array('id'=>'1','姓名'=>'小白','性别'=>'男','班级'=>'1','总分'=>75),
array('id'=>'2','姓名'=>'小黑','性别'=>'男','班级'=>'1','总分'=>76),
array('id'=>'3','姓名'=>'小明','性别'=>'女','班级'=>'1','总分'=>77),
array('id'=>'4','姓名'=>'小光','性别'=>'女','班级'=>'1','总分'=>80),
array('id'=>'5','姓名'=>'小草','性别'=>'女','班级'=>'1','总分'=>82),
array('id'=>'6','姓名'=>'小丽','性别'=>'男','班级'=>'1','总分'=>90),
array('id'=>'7','姓名'=>'小红','性别'=>'男','班级'=>'1','总分'=>90),
array('id'=>'8','姓名'=>'小蓝','性别'=>'男','班级'=>'1','总分'=>84)
);

//第一次遍历数组筛出男性
//用到循环函数、数组函数:foreach、array_push

$manArr = array();//定义个空数组,一会装男性数据
$topScore = 0;//定义个最高总分,一会在遍历过程顺便获取最高分

foreach($arr as $v){
if($v['性别']=='男'){
//对符合男生条件的数组进行记录
array_push($manArr,$v);//把符合男性条件的数组装进刚定义的空数组
//记录男生最高分的分数
if($v['总分']>$topScore){
$topScore = $v['总分'];
}
}
}
//所以现在$manArr就是所有男性了,array('小白'=>75,...)

//接下来是求出总分最高的,继续用循环的方式取出成绩等于最高分数的
foreach($manArr as $v){
if($v['总分']==$topScore){
echo $v['姓名'] . "\r\n";
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-12-04
1.array_count_values(Array('a','b','c','a','b')):返回数组中所有值出现的次数,函数执行结果:Array ( [a] => 2 [b] => 2 [c] => 1 )。
2.求和可以写foreach循环。