帮忙看一下这个段php代码 到底哪里出了问题

其他的都可以用就是在选取最好评委时打不出bestindex下标<html><head><metahttp-equiv="contenttype";content="tex... 其他的都可以用就是在选取最好评委时打不出bestindex下标
<html>
<head>
<meta http-equiv="content type"; content="text/html"charset="utf-8";/>
<h1>请8位评委打分<h1>
<head/>
<body>
<form action="array1.php" method="post">
<input type="text" name="score"/>
<input type="submit" value="最后得分"/>
<form/>
</body>
<?php
$score1=$_REQUEST['score'];
$score=explode(" ",$score1);

$minindex=findmin($score,$findval);
function findmin(&$score,$findval){
$findval=$score[0];
$minindex=0;
for($i=0;$i<count($score);$i++){
if($findval>=$score[$i]){
$findval=$score[$i];
$minindex=$i;
}
}
echo"<br/>扣到一个最低分"."$findval"."由第"."$minindex"."评委打出";
return $minindex;
}

$maxindex=findmax($score,$findval);
function findmax(&$score,$findval){
$findval=$score[0];
$maxindex=0;
for($j=0;$j<count($score);$j++){
if($findval<=$score[$j]){
$findval=$score[$j];
$maxindex=$j;
}
}
echo"<br/>扣到一个最高分"."$findval"."由第"."$maxindex"."评委打出";
return $maxindex;
}

$totalscore=0;
for($s=0;$s<=count($score);$s++){
if($s!=$minindex&&$s!=$maxindex){
$totalscore+=$score[$s];
}
}

worsest(&$score,$findval,&$avg);
function worsest(&$score,$findval,&$avg){
$findval=$score[0];
//$worsestindex=0;
for($w=1;$w<count($score);$w++){
if(abs($findval-$avg)<abs($score[$w]-$avg)){
$findval=$score[$w];
$worsestindex=$w;
}
}
echo"<br/>表现最坏的评委是".$worsestindex."号";
}

best(&$score,$findval,&$avg);
function best(&$score,$findval,&$avg){
$findval=$score[0];
//$bestindex=0;
for($b=1;$b<count($score);$b++){
if(abs($findval-$avg)>abs($score[$b]-$avg)){
$findval=$score[$b];
$bestindex=$b;
}
}
echo"<br/>表现最好的的评委是".$bestindex."号";
}

echo"<br/>". $totalscore;
unset($score[$minindex]);
unset($score[$maxindex]);
echo "<br/>".count($score);
$avg=$totalscore/count($score);
echo"<br/>最后得分=".$avg;
?>
<html/>
展开
 我来答
CT大耳牛
推荐于2016-04-30 · 超过28用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:54.8万
展开全部

你可以在你的 best() 方法里面先打印一下你的参数传入的值是不是正确的?看了下,你的best() 方面里面的 if(abs() > abs()){} 没进这个里面

//还可以这样写 多看看 array 操作
$request = $_REQUEST['score'];
/**
 * $scoreArray 和 $scoreArray1 可以省略一个
 **/
$scoreArray = $scoreArray1 = explode(" ",$request );
//测试数据
$scoreArray = $scoreArray1 = array(100,100,60,30,40,41,39,21);
//计算数组中的个数
$scoreCount = count($scoreArray);
sort($scoreArray);
//去除一个最低分数和一个最高分数
echo "<br />";
echo '去除一个最低分数:'. $scoreArray[0]."<br />";
echo '去除一个最高分数:'. $scoreArray[$scoreCount-1]."<br />";
unset($scoreArray[0]);
unset($scoreArray[$scoreCount-1]);
/**
 * 

 * array_search() 
 * max()、min()
 * array_sum()
 **/
echo '打分最低的评委下标:'. array_search(min($scoreArray1),$scoreArray1)."<br />"; 
echo '打分最高的评委下标:'. array_search(max($scoreArray1),$scoreArray1)."<br />"; 
echo '有效打分评委人数:'. count($scoreArray)."<br />";
echo '有效总分数:'.array_sum($scoreArray)."<br />";
echo '最后得分:'. round(array_sum($scoreArray)/count($scoreArray), 2);
更多追问追答
追问
你写的这里我做出来了 可是我就是在求最佳评委 求abs做不出来 就像你说的他进不去 if(abs() > abs()){} ,这是为什么啊?但是在woresest里可以进去。
追答
你可以先打印一下你的 best 这个方法里面的参数值,看看;这个需要自己调;而且你的写法是可以优化的 你看看,你哪里使用了 多次 for;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式