2014-03-12 30 views
0

我想打一个师啄,基本上我希望它这样做无法弄清楚如何循环,直到一个值

当你有0个联赛积分=青铜V
当你有10个联赛积分=青铜IV
当你有20个联赛积分=青铜III

因此,基本上,你仍然会青铜IV,直到你有整整20分,所以我的观点是,你是青铜四,当你有10-20点,有人帮忙?

    <?php 
        $league = $points; 
        if ($league <= 0) { 
         $league = "Bronze V"; 
        } else if ($league == 10) { 
         $league = "Bronze IV"; 
        } else if ($league == 20) { 
         $league = "Bronze III"; 
        } 
        ?> 

现在,我不能得到那个工作,导致当有人例如24点,它会显示为24点,而不是铜牌IV​​

+0

你为什么问同样的问题两次? – putvande

+0

wheres其他问题@putvande – Ascherer

+0

它已被删除。完全一样的问题,但它被关闭了。 – putvande

回答

0

我想你想>=

<?php 
if ($points >= 0) { 
    $league = "Bronze V"; 
} elseif ($points >= 10 && $points < 20) { 
    $league = "Bronze IV"; 
} else { 
    $league = "Bronze III"; 
} 
?> 

为确保一切的缘故是完美的,继承人一个更好的布局

<?php 
if ($points >= 20) { 
    $league = 'Bronze III'; 
} elseif ($points >= 10) { 
    $league = 'Bronze IV'; 
} else { 
    $league = 'Bronze V'; 
} 
?> 
+0

这样它的值不会从1到9. – putvande

+0

我刚刚复制了你的基本逻辑,编辑过的代码应该是'> = 0'而不是' = 0' – Ascherer

+0

@Ascherer这应该工作,但它给我一个错误,有一个意想不到的<在行498,这是该代码 – ImSchnebz

-1

你采用t他听起来像是要使用大于或等于>=时等于比较运算符==

Ascherer指出,有$league = $points;似乎不是一个好主意。此外,您应该养成使用单引号而不使用双引号的习惯,因为PHP必须在双引号字符串内部解析,以检查内部是否有变量,这会略微降低性能。

这是我会怎么写呢:

if($points >= 0) 
{ 
    $league = 'Bronze V'; 
} 
else if($points >= 10) 
{ 
    $league = 'Bronze IV'; 
} 
else if($points >= 20) 
{ 
    $league = 'Bronze III'; 
} 
else 
{ 
    $league = 'Undefined'; 
} 
+1

双引号使用单引号的微优化并不是什么大不了的事。最后别人可能不相关的,如果'$ points'总是大于0 – Ascherer

+0

@Ascherer你可能是正确的,它不会有很大的不同 - 它只是一个好习惯,我想。关于最后的'else'分支,很可能它不应该是必要的,但我不能告诉你多少年来我失去了多少小时,因为变量具有不可预测的价值,我没有预计。出于这个原因,我**总是**有一个最后的'else'语句来处理出现问题的情况。 – Nate