2013-12-19 4 views
2

변수를 항상 특정 범위 (0-5) 내에서 변경해야 라운드에서 작업 할 수 있습니다. 예를 들어 변수가 6을 치면 0으로 변경해야합니다. -1이 나오면 5로 변경해야합니다. 내 생각은 어떤 아이디어입니까? 모호한 것에 대해 죄송PHP에서 정수 값보다 크거나 작은 값 캐치

function get_further_letter($index = 5, $number = 3, $direction = "encode") { 
    $count = 5; 
    switch ($direction) 
    { 
    case "encode": 
     $index = $index + $number; //pushes the value of index to 8 
     break; 
    } 
    // Start my attempt 
    while ($index > $count) 
    { 
     $index = $index - $count; 
    } 
    // End my attempt 
    return $index; 
} 

>> get_further_letter(5, 3); // 5 + 3 = 8, 8 is 1r3, so keep r3 as 0, 1, 2 
2 
>> get_further_letter(5, 4); // 5 + 4 = 9, 9 is 1r4, so keep r4 as 0, 1, 2, 3 
3 
>> get_further_letter(5, -7); // 5 + -7 = -2, -2 is -1r-2, so keep r-2 as 0, 1, 2, 3 
4 

, 나는이 작동하도록하는 방법에 대한 매우 혼란, 그래서 내 요구 사항을 명확하게하기 위해 조금 어렵습니다.

내 경우와 같이 마지막 예제에서 -2가 붙습니다. 특히 배열 인덱스가됩니다. 이것이 실제로 일어날 지 확실하지 않습니다. [0 .. n)의 범위 내의 값을 유지합니다

+1

당신이하고 싶은 것이 분명하지 않습니다 – Aris

+1

숫자가 범위 내에 없으면 어떻게 하시겠습니까? – Syjin

+1

정확히 무엇을 얻고 싶습니까? –

답변

3

일반적인 기능은 이것이다 :

function fn($x, $n) 
{ 
    return ($x % $n + $n) % $n; 
} 

이중 모듈은 음수를 처리하는 것입니다.

+1

와우. 그러한 대답. 훌륭한 성공. – PeeHaa

+0

@PeeHaa Teeheehee ~ –

+0

이 코드는 완벽하게 작동했습니다. @ 피하, 당신의 솔루션을 시도했지만 의도 한 것보다 다르게 계산 된 변수를 쳤습니다. 그러나 Jack의 솔루션은 견고한 단 하나의 라이너입니다. 도와 주신 모든 분들께 큰 감사를드립니다! :) – Jamus

관련 문제