2012-01-28 81 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; 
相關問題