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