繁体   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