想编一个程序, 输入8个成绩,然后求出其中最高分。运行下面整个,然后内存占用不停增大,浏览器卡死,
球高人解释为什么?<html>
<head>
<title>8人成绩打分</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<h1>请输入8个选手的成绩,用空格隔开</h1>
<form action="grade.php" method="post">
<input type="text" name="grade" />
<input type="submit" value="提交数据" />
</form>
<?php $grade=$_POST["grade"];
$arr=explode(" ",$grade);
var_dump($arr);//取出输入8个数中的最大值
for($i=0;$i<count($arr);$i++){
if($arr[$i] >= $arr[$i+1]){
       $arr[$i+1]=$arr[$i];
}
echo "</br>最大值".$arr[$i+1];
}?>
</body>
</html>

解决方案 »

  1.   

    <html>
    <head>
    <title>8人成绩打分</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
    <h1>请输入8个选手的成绩,用空格隔开</h1>
    <form action="tt.php" method="post">
    <input type="text" name="grade" />
    <input type="submit" value="提交数据" />
    </form>
    <?php if( isset( $_POST["grade"] ) ){
    $grade=$_POST["grade"];
    $arr=explode(" ",$grade);
    var_dump($arr);

    //取出输入8个数中的最大值
    $max = -1;//成绩不能为负数
    for($i=0;$i<count($arr);$i++){
    if($arr[$i] >= $max){
    $max = $arr[$i];
    }
    }
    echo "<br/>最大值".$max;
    }
     
    ?>
    </body>
    </html>
      

  2.   

    求数组最大值$array=array(11,12,13,14);echo $array[arrMax($array)];function arrMax($arr)
    {
        $m = max($arr);
        return array_search($m, $arr);
    }
      

  3.   

    php要认真点才行,细心最重要。
      

  4.   

    死循环!!!
    $grade=$_POST["grade"]; //你没有检查$_POST["grade"]的存在,$grade可能是空串
    $arr=explode(" ",$grade);//当$grade为空串时,$arr 是这样的数组 array(0 => '')
    for($i=0;$i<count($arr);$i++){ //所以循环是可以进入的
        if($arr[$i] >= $arr[$i+1]){ //当$i到达最后一个元素时,$arr[$i+1] 因不存在而为空,条件永远成立
           $arr[$i+1]=$arr[$i];//于是不断的时数组增大
        }只需
     for($i=0;$i<count($arr)-1;$i++)
    一切引刃而解
      

  5.   

    你只需要换个思路就可以解决问题,死循环的原因是你在$arr[$i+1]的时候最后一个值根本就没有。
    请参加我的代码。谢谢楼主 
      

  6.   

    数组有N个单元,但很多“两两顺次”操作只是N-1次,我刚学写程序时也经常犯这样的错误还好,那时只是basic时代……