2012-04-17 8 views
2

, 난 당신이 볼 수 있듯이, 내가 루프에 주위에 간다 매 3 번 뭔가를하고 있어요더 좋고 더 간단한 방법이 있습니까? , PHP에서

$x = 0; 

    for ($i = 0; $i < 100; $i++) 
    { 
     if ($x == 3) //better way to do this? in this example, determine every 3 times in a loop 
     { 
      //"do something" 
      $x = 0; 
     } 

     $x++; 

처럼처럼 뭔가를 루프를하고 있어요,하지만 문제는 거기에있다 루프에서 "무언가를"할 시간이 필요한지 알아내는 더 쉽고 간단한 방법?

+0

글쎄, 당신은 % 연산자는 훨씬 더 비싼 단순 비교하는 것보다이 코드를하지 않기 때문에 괜찮습니다 무슨 짓을했는지 더 간단합니다. – invisal

+0

'% 연산자가 간단한 비교보다 훨씬 비쌉니다. '- 흥미 롭습니다 ... 참조가 있습니까? –

+0

@JustinEthier [CMP] (http://www.penguin.cz/~literakl/intel/c.html#CMP) 명령은 약 2 ~ 3 클럭을 사용하는 반면 [DIV] (http://www.penguin.cz/ ~ literakl/intel/d.html # DIV) 명령은 Intel 프로세서에 40 개의 클럭을 사용합니다. – invisal

답변

5

당신은 모듈로 사용할 수 있습니다

if(($i % 3 == 0) && ($i > 0)) 
{ 
    ... 
} 

(는 0으로 우수한 있는지 확인하는 것을 잊지 마세요하거나 첫 번째 반복의 경우

3

당신은 계수를 사용할 수있는 드릴 것입니다. $ i가 세 가지로 나눌 경우 운영자 % 확인합니다 즉, $ i에서 $ X

0

사용 계수 관리에서 당신을 유지해야합니다.

for ($i = 0; $i < 100; $i++) 
{ 
    if($i % 3 == 0) 
    { 
     // do something 
    } 
} 
3

$x 대신에 을 확인하십시오. 첫 번째 실행에서도 무언가를 원한다면 $i > 0 && 부분을 놓으십시오.

+0

+1 첫 번째 조건이 중요합니다. – Josh

2

Fizzbuzz huh? 당신은 나머지 연산자 할 것 - % 당신은 modulus operator 사용하여 $의 X 변수를 피할 수

if ((6 % 3) == 0) { 
    echo "is divisable by three"; 
} 
0
for ($i = 0; $i < 100; $i++) { 
    { 
     if($i%3==0){ 
     //Do Something 
    } 
} 
2

:

if ($i % 3 == 0 && i > 0){ 
    // Do something 
} 

기본적으로이 같은 논리를 구현을; 세 번째 반복마다 루프가 추가 코드를 실행합니다.

+0

+1 Fizzbuzz! – Andy

0
이 코드에서

:

for ($i = 0; $i < 100; $i++) 
    { 
     if(($i%3==0) && $i>0) 
     { 
      //Do Something #first will be after 4 time 
     } 
    } 

하지만,이 하나

for ($i = 1; $i <=100; $i++) 
    { 
     if($i%3==0) 
     { 
      //Do Something #even first will be after 3 time 
     } 
    } 
관련 문제