2012-01-28 4 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));는 I가 얻을 수있는만큼 가까운하지만

5 
15 
25 
35 
45 
55 
65 
75 
85 

하지 원하는 5, 10, 15, 20 등등

01,235을 준다

이것을 쓰는 올바른 방법은 무엇입니까?

답변

4

10 추가 숫자를 곱한 다음 결과를 10으로 나누고 가장 가까운 (바닥) 정수로 반올림 한 다음 5를 곱하면 그 결과를 얻을 수 있습니다. 그래서 ... 숫자는 47이다.

47 + 10 = 57

10분의 57 = 5.7

층 5.7 = 5

이 할 수 = 25

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

괄호 중 하나가 제대로 닫히지 않았습니다 – penu

+0

(죄송합니다) 죄송합니다 ...하지만 내 대답은 선택한 답변보다 "더 가볍습니다" 반올림되지 않은 숫자를 얻으십시오. 예제에서는 5.7 * 5 = 28.5가됩니다. –

+0

좋아, 고마워. .. – penu

0

DIVDIDE 내지 십 (그리고 그 int로 라운드), 다음 ... (5) 그 곱 10분의 100 = 10 => 10 * 5 = 50

+0

좋아, <(보다 작은) 그냥 지금 ... – djot

1

(($l + 10)/10) * 5 트릭을 할 것

+1

는 다른 결과가 잘못 될 것입니다, 5를 곱 전에 바닥 초기 식에 필요했다 ... 자세한 내용은 내 대답 보면 :) –

+0

물론, 그렇습니다. 그것은 내 잘못이야 =) – OleGG

0

5 × 5 :

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

그건 단 한사람도 아니야. – Borealid

+0

당신은 그것을 만들 수 있습니다 : P – machineaddict

+0

당신은 세미콜론을 사용하여 부정 행위를 알고 있습니다. 그렇지 않으면 모든 코드를 한 줄로 만들 수 있습니다 ... – Borealid

0

를 내가 제대로 질문을 이해한다면, 그것은보다 더 어렵다 ;

$next = floor($l/10)*5+5; 
관련 문제