2012-01-28 10 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

10分の57 = 5.7

床これがそうかもしれない5.7 = 5

の5x5 = 25

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

かっこのうちの1つが正しく閉じられていません – penu

+0

残念ですが(固定されています)...しかし、私の答えは選択した答えよりも "ライター"です。私の例では、5.7 * 5 = 28.5になるでしょう。 –

+0

さて、ありがとう:) .. – penu

0

DIVDIDEを通じて10(およびそれがintにラウンド)、そして... 5とそれを掛ける10分の100 = 10 => 10 * 5 = 50

+0

[OK]を、<(より小さい)は、今で... – djot

1

(($l + 10)/10) * 5トリックを行います

+1

は、あなたが他の結果は間違っているだろう、5を掛ける前に、床のあなたの最初の式に必要な見た...詳細については、私の答えを見て: ) –

+0

はい、もちろんです。それは私のせいです=) – OleGG

0

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

これは1ライナーではありません。 – Borealid

+0

あなたはそれを作ることができます:P – machineaddict

+0

あなたはセミコロンを使用していることが不正行為であることを知っています。それ以外の場合は、すべてのコードを1ライナーにすることができます... – Borealid

0

私が正しくあなたの質問を理解していれば、それはより困難ではありません;

$next = floor($l/10)*5+5; 
関連する問題