簡體   English   中英

如何在此IF語句中回顯第三個條件?

[英]How can I echo the third condition in this php IF STATEMENT?

我已經使用phpmysql開發了學校成績單應用程序。 在成績單中,如果學生在其中一門科目上不及格,則他/她將在成績單的結果部分中被宣布為“失敗”。 我可以用這段代碼完美地完成這項工作。

今天學校的校長來找我,說今天沒有使用,並告訴我將代碼更改為以下內容:如果一個學生在兩個科目上都沒有通過,則應宣布他為“失敗”,但如果他在僅在一個主題上不及格, 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.

?>

首先,創建一個初始變量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';
}

只需創建一個計數器來了解故障數量,然后針對不同的打印使用條件。

<?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";
}

?>

嘗試編寫好的代碼。 盡可能清晰易讀。

還要給變量命名一個含義。

$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,然后您可以檢查是否已經完成。

您可以遍歷所有標記,並為每個小於30的標記將$ sum加1。然后檢查$ sum是否為<2 OR> 2,應該是。

為什么不對數組排序,跳過迭代並查看前兩個值是否小於30,或者第一個值是否小於30,第二個值是否大於30,最后一個值(如果第一個值已經大於30)呢?

像這樣:

$all = array(41, 55, 56, 39, 29, 47);

sort($all); 

if ($all[0] < 30 && $all[1] < 30) echo "Failed";
elseif ($all[0] < 30 && $all[1] >= 30) echo "Simple";
elseif ( $all[0] >=30 ) echo "Passed";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM