[英]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.