我想将学生商标改为GP,所以我有这样的代码
$mark=80;
if($mark>=84.50 && $mark<=100){$GP = 4;}
if($mark>=79.50 && $mark<=84.49){$GP = 3.67;}
if($mark>=74.50 && $mark<=79.49){$GP = 3.33;}
if($mark>=69.50 && $mark<=74.49){$GP = 3;}
if($mark>=64.50 && $mark<=69.49){$GP = 2.50;}
if($mark>=59.50 && $mark<=64.49){$GP = 2;}
if($mark>=54.50 && $mark<=59.49){$GP = 1.50;}
if($mark>=49.50 && $mark<=54.49){$GP = 1;}
else { $GP = 0; }
echo $GP;
这里的预期输出是3.67,但是这里我得到0.有人可以解释为什么我会得到0吗?
答案 0 :(得分:2)
每个if
都是独立评估的。无论前几个if
发生了什么,您都会到达最后一个,并且由于$mark
不在49.50
和54.49
之间,代码会进入else
块,并将$GP
设置为0
。如果您使用if
替换除第一个else if
以外的所有$mark=80;
if($mark>=84.50 && $mark<=100){$GP = 4;}
else if($mark>=79.50 && $mark<=84.49){$GP = 3.67;}
else if($mark>=74.50 && $mark<=79.49){$GP = 3.33;}
else if($mark>=69.50 && $mark<=74.49){$GP = 3;}
else if($mark>=64.50 && $mark<=69.49){$GP = 2.50;}
else if($mark>=59.50 && $mark<=64.49){$GP = 2;}
else if($mark>=54.50 && $mark<=59.49){$GP = 1.50;}
else if($mark>=49.50 && $mark<=54.49){$GP = 1;}
else { $GP = 0; }
echo $GP;
,您将获得预期的逻辑:
public class Person {
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
//etc..
public string ApplicationUserId { get; set; }
}
public class MyContext :DbContext {
public DbSet<Comment> Comments { get; set; }
public DbSet<Person> Persons { get; set; }
//... other DbSets
}
public class Comment{
public int Id {get;set;}
public string Message{get;set;}
public DateTime Time{get;set;}
public virtual Person Author {get;set;}
}
答案 1 :(得分:0)
exports.show500 = function(req, resp, err) {
console.log('heree')
resp.writeHeader(500, {"Content-Type": "application/json"});
resp.write(JSON.stringify({data: "Error:" + err}))
};
exports.sendJSON = function(req, resp, data) {
if (data){
resp.writeHeader(200, {"Content-Type": "application/json"});
resp.write(JSON.stringify(data));
}
}
你的比较没有以正确的方式检查上面的代码。
答案 2 :(得分:0)
您的代码失败,因为您的else
仅适用于最后一个条件。这意味着所有以前的if
陈述都没有结果。
您应该使用elseif
来确保条件真正不同:
$mark=80;
if($mark>=84.50 $GP = 4;
elseif($mark>=79.50) $GP = 3.67;
elseif($mark>=74.50) $GP = 3.33;
elseif($mark>=69.50) $GP = 3;
elseif($mark>=64.50) $GP = 2.50;
elseif($mark>=59.50) $GP = 2;
elseif($mark>=54.50) $GP = 1.50;
elseif($mark>=49.50) $GP = 1;
else $GP = 0;
echo $GP;
如您所见,您还可以免除&&
附加条件。最后,您不需要围绕简单语句的大括号({}
)。