2012-01-28 164 views
1

我试图重现以下内容作为一行代码。PHP:每次增加一个数字5

if($l < 10) $next = 5; return; 
if($l < 20) $next = 10; return; 
if($l < 30) $next = 15; return; 
if($l < 40) $next = 20; return; 
if($l < 50) $next = 25; return; 
if($l < 60) $next = 30; return; 
if($l < 70) $next = 35; return; 
if($l < 80) $next = 40; return; 
if($l < 90) $next = 45; return; 
if($l < 100) $next = 50; return; 

(语法上不正确的,但你的想法)

因此,如果数小于10,$其次是5,如果数量少于20那么它的10

$next = ((round($l, -1)-5));是接近我可以得到它,但是,让

5 
15 
25 
35 
45 
55 
65 
75 
85 

没有预期的5,10,15,20 ..等

写这个的正确方法是什么?

回答

4

添加10然后将结果除以10并将其舍入到最接近的(整数)整数,然后您将得到乘以5的数字,这将产生您的结果...所以... 假设您的数字是47.

47 + 10 = 57

一十分之五十七= 5.7

地板5.7 = 5

5×5 = 25

return floor(($i + 10)/10) * 5 
+0

其中一个括号没有正确关闭 – penu 2012-01-28 08:47:00

+0

抱歉(固定它)...但我的回答比您选择的答案“更加严格”,因为如果您没有确定结果得到一个不是四舍五入的数字,在我的例子中你会得到5.7 * 5 = 28.5。 – 2012-01-28 08:59:51

+0

好的,谢谢:) .. – penu 2012-01-28 09:03:18

0

DIVDIDE通过十(和一轮为int),再乘上用5 ...10分之100= 10 => 10×5 = 50

+0

好吧,看到<(比较小),只是现在... – djot 2012-01-28 08:40:46

1

(($l + 10)/10) * 5将这样的伎俩

+1

你需要地面您最初的方程式,5乘以之前,否则结果将是错误的...看我的答案的详细信息: ) – 2012-01-28 09:01:42

+0

当然可以。这是我的错=) – OleGG 2012-01-28 09:43:58

0

这可能会做:

$i=10; 
while($l < $i){ 
    $next = $i/2; 
    $i+=10; 
} 
+0

这不是一条线。 – Borealid 2012-01-29 05:35:45

+0

你可以使它:P – machineaddict 2012-01-29 08:43:41

+0

你知道使用分号是作弊。否则,所有的代码都可以制作成单行... – Borealid 2012-01-29 08:45:00

0

如果我正确理解你的问题,它并不比困难;

$next = floor($l/10)*5+5; 
相关问题