itsource

PHP: 루프의 모든 N번째 반복을 어떻게 결정합니까?

mycopycode 2023. 8. 5. 10:07
반응형

PHP: 루프의 모든 N번째 반복을 어떻게 결정합니까?

저는 XML을 통해 3회 게시할 때마다 이미지를 반향하고 싶었습니다. 여기 제 코드가 있습니다.

<?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 을 루프하지 않습니다.

가장 쉬운 방법은 계수 분할 연산자를 사용하는 것입니다.

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

작동 원리: 모듈러스 분할은 나머지를 반환합니다.짝수 배수일 때 나머지는 항상 0입니다.

한 가지 단점이 있습니다.0 % 30과 같습니다.카운터가 0에서 시작하면 예기치 않은 결과가 발생할 수 있습니다.

@Powerlord의 대답에서 벗어나면,

"한 가지 캐치가 있습니다. 0% 3은 0과 같습니다.카운터가 0에서 시작할 경우 예상치 못한 결과가 발생할 수 있습니다."

카운터를 0(어레이, 쿼리)에서 시작할 수 있지만 오프셋할 수 있습니다.

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

PHP 설명서에 나와 있는 모듈로 산술 연산을 사용합니다.

예.

$x = 3;

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

계수 계산에 대한 자세한 내용을 보려면 여기를 클릭하십시오.

게시물 3개마다?

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

또한 모듈러스 없이도 할 수 있습니다.카운터가 일치할 때 재설정하면 됩니다.

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

다음은 어떻습니까: if(($counter % $display) == 0)

저는 이 상태 업데이트를 사용하여 1000번 반복할 때마다 "+" 문자를 표시하고 있으며, 잘 작동하는 것 같습니다.

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

첫 번째 위치에서는 작동하지 않으므로 더 나은 솔루션은 다음과 같습니다.

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

직접 확인해 보세요.저는 4번째 요소마다 클래스를 추가하는 것을 테스트했습니다.

언급URL : https://stackoverflow.com/questions/936242/php-how-do-you-determine-every-nth-iteration-of-a-loop

반응형