function rawtransform{
if ($raw>=500 && $raw<=550){
$score= 1;
}
if ($raw>=550 && $raw<=600){
$score= 2;
}
if ($raw>=600 && $raw<=650){
$score= 3;
}
if ($raw>=700 && $raw<=750){
$score= 4;
}
if ($raw>=750 && $raw<=800){
$score= 5;
}
if ($raw>=800 && $raw<=850){
$score= 6;
}
if ($raw>=850 && $raw<=900){
$score= 7;
}
if ($raw>=900 && $raw<=950){
$score= 8;
}
if ($raw>=950 && $raw<=1000){
$score= 9;
}
}
这似乎非常基本,编码不太好。 (我只学习php) 任何人都可以提供更好的方法吗?也许是一个if语句。我觉得有一种方法让我无法理解它。
由于
答案 0 :(得分:2)
如何使用数学?
function rawtransform($raw) {
$score = (int)($raw/50)-9;
}
但是,您可能希望为输入添加范围检查。
答案 1 :(得分:1)
您可以创建条件列表,然后循环并应用if。
$conditions = array(
array(500, 550, 1), // greater than value, lesser than value, assignment value
array(550, 600, 2),
array(650, 700, 3) // add the rest of the conditions
);
foreach($conditions as $condition) {
if($raw >= $condition[0] && $raw <= $condition[1]) {
$score = $condition[2];
}
}
答案 2 :(得分:0)
if ($raw >= 500 && $raw<= 1000){
$score = ceil(($raw-500)/50);
}
答案 3 :(得分:0)
你的逻辑似乎是你从raw减去450,然后除以50并向下舍入到最接近的整数。 (但是在实现中存在问题,就好像raw是50的因子一样,它将满足两个if语句的要求,并且当它在650到700之间时会有一个条件缺失。)
您可以按照以下方式执行此操作:
floor(($raw-450)/50)
答案 4 :(得分:0)
您可以使用if ... else构造。
if ($raw>=500 && $raw<=550){
$score= 1;
}
elseif ($raw>=550 && $raw<=600){
$score= 2;
}
elseif ($raw>=600 && $raw<=650){
$score= 3;
}
这样,如果脚本遇到575的大小,它甚至不会费心去完成以下条件。
在您给出的示例中,脚本可以通过以下方式简化:
function rawtransform($raw) { $score = floor(($raw - 450)/50); return $score; }