2009-06-01 3 views
40

내가 여기 XML을 통해 3 후 후 모든를 이미지를 에코 싶어하는 것은 내 코드입니다 : 여기 PHP : 루프의 N 번째 반복을 어떻게 결정합니까?

<?php 
// URL of the XML feed. 
$feed = 'test.xml'; 
// How many items do we want to display? 
//$display = 3; 
// Check our XML file exists 
if(!file_exists($feed)) { 
    die('The XML file could not be found!'); 
} 
// First, open the XML file. 
$xml = simplexml_load_file($feed); 
// Set the counter for counting how many items we've displayed. 
$counter = 0; 
// Start the loop to display each item. 
foreach($xml->post as $post) { 
    echo ' 
    <div style="float:left; width: 180px; margin-top:20px; margin-bottom:10px;"> 
image file</a> <div class="design-sample-txt">'. $post->author.'</div></div> 
'; 

    // Increase the counter by one. 
    $counter++; 
    // Check to display all the items we want to. 
    if($counter >= 3) { 
    echo 'image file'; 
    } 
    //if($counter == $display) { 
    // Yes. End the loop. 
    // break; 
    //} 
    // No. Continue. 
} 
?> 

은 샘플 처음 3이 정확하지만 지금은 루프 idgc.ca/web-design-samples하지 않습니다 -testing.php

+1

StackOverflow 코드 포맷팅 모드를 사용하십시오. 지금 코드를 읽을 수 없습니다. –

+0

무엇이 문제입니까? 또한 텍스트 영역에서 사용할 수있는 도구를 형식화하는 방법을 살펴보십시오. –

+0

질문을 "모든 N 번째 루프에 이미지 표시"와 같이 더 구체적으로 바꾸는 것이 좋습니다. –

답변

123

가장 쉬운 방법은 모듈 나누기 연산자를 사용하는 것입니다.

if ($counter % 3 == 0) { 
    echo 'image file'; 
} 

어떻게 작동합니까 : 계수 부분은 나머지를 반환합니다. 짝수 배가되면 나머지는 항상 0입니다.

하나의 캐치가있다 : 0 % 3이 카운터가 0

+0

다른 문제는 내 라이트 박스가 더 이상 작동하지 않는다는 것입니다. 어떤 PHP PHP 충돌이 있습니까? –

+0

Modulus는 적절한 방법이지만, 수백만 번의 반복 작업을 수행하는 경우 모듈러스가 분할을 포함하므로 성능 병목 현상이 발생할 수 있습니다. 이 경우 두 번째 카운터를 사용하고 원하는 숫자와 비교하여 비교가 일치 할 때 다시 설정하는 것이 좋습니다. – bhelm

8

PHP 매뉴얼에서 모듈러 연산 연산 here을 사용하십시오.

$x = 3; 

for($i=0; $i<10; $i++) 
{ 
    if($i % $x == 0) 
    { 
     // display image 
    } 
} 

계수 계산에 대한 자세한 내용은 here을 클릭하십시오.

2

에서 시작하는 경우이 예상치 못한 결과가 발생할 수 0와 동일한 방법에 대해 : 만약 (($ 카운터 %의 $ 표시) == 0)

5

3 게시물마다?

if($counter % 3 == 0){ 
    echo IMAGE; 
} 
2

이 상태 업데이트를 사용하여 1000 회 반복 할 때마다 "+"문자가 표시되며 정상적으로 작동하는 것으로 보입니다. Powerlord의 대답 @ 떨어져가는

if ($ucounter % 1000 == 0) { echo '+'; } 
8

,

"한 캐치가있다 : 당신의 카운터가 0에서 시작하는 경우이 예기치 않은 결과가 발생할 수 있습니다 0 % 3 0 같다"

당신은 여전히 ​​0 (배열, querys)에서 귀하의 카운터를 시작하지만 계수없이

if (($counter + 1) % 3 == 0) { 
    echo 'image file'; 
} 
0

당신이 할도 수를 상쇄 할 수 있습니다. 카운터가 일치하면 카운터를 재설정하십시오.

if($counter == 2) { // matches every 3 iterations 
    echo 'image-file'; 
    $counter = 0; 
} 
관련 문제