0

phpmysql を使用して学校のマークシート アプリケーションを開発しました。マークシートでは、学生が科目の 1 つに失敗した場合、マークシートの結果セクションで「不合格」と宣言されます。このコードでその仕事を完璧に行うことができました。

今日、学校の校長が私のところに来て、これは今日は使われていないと言い、私のコードを次のように変更するように言いました。 「単純」という1 つの科目だけで失敗しecho、すべての科目に合格した場合、「合格」と宣言する必要があります。私は自分のコードをどのように変更するかを理解しようと長い時間を費やしてきましたが、それでも解決策を思いつくことができませんでした. だから、助けを求めてここに来ました。どんな提案でも大歓迎です。よろしくお願いします。これが私のコードです:

<?php 

$all = array(41, 55, 56, 39, 29, 47);  //Mark in each subject. Pass mark is 30

// second, just iterate over them till you find one value -30
for($i=0; $i < count($all); $i++){
     if($all[$i] < 30) $sum = 1;
}

echo (!empty($sum)) ? 'Failed' : 'Passed';//'Simple' must be included here, but I still could not find the solution.

?>
4

5 に答える 5

1
$count = 0;
//define the length outside of the loop - 
//otherwise PHP will call the function count() each iteration 
//which is bad practice performance wise
$length = count($all);

for($i=0; $i < $length; $i++){
     if($all[$i] < 30) ++$count;
     if($count >= 2) {
         $sum = 1; 
     }
}

これは、失敗した場合は $count をインクリメントし、2 回失敗した場合は $sum を設定します。これは、既に行ったように確認できます。

于 2013-07-25T14:26:56.720 に答える
1

まず、0 で初期変数を作成し、for ループ内でインクリメントします。

$all = array(41, 55, 56, 39, 29, 47);  //Mark in each subject. Pass mark is 30
$sum = 0;
// second, just iterate over them till you find one value -30
for($i=0; $i < count($all); $i++){
    if($all[$i] < 30) $sum++;
}

ここで、複数の条件でチェックします。

if($sum == 0) {
    echo 'passed';
} elseif($sum == 1) {
    echo 'simple';
} else {
    echo 'failed';
}
于 2013-07-25T14:25:50.790 に答える
1

カウンターを作成して失敗の数を把握し、さまざまなプリントの条件を使用するだけです。

<?php 

$all = array(41, 55, 56, 39, 29, 47);  //Mark in each subject. Pass mark is 30

$numFails = 0;

// second, just iterate over them till you find one value -30
for($i=0; $i < count($all); $i++){
     if($all[$i] < 30){
         $numFails++;  //incrementing the number of failatures
     }
}

if($numFails > 1){
    echo "Failed";
}
else if($numFails == 1){
   echo "Simple";
}
else{
   echo "Passed";
}

?>

良いコードを書くようにしてください。できるだけわかりやすく、読みやすく。

また、意味のある変数に名前を付けます。

于 2013-07-25T14:25:52.043 に答える
0

すべてのマークを反復処理し、マーク < 30 ごとに $sum を 1 ずつ増やすことができます。次に、$sum が <2 OR > 2 であるかどうかを確認します。

于 2013-07-25T14:26:21.437 に答える