PHP: Nasıl bir döngünün her tekrarında N. belirliyorsunuz?

6 Cevap php

Burada XML ile 3 mesaja sonra her kodumu bir görüntü yankı istedim:

<?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.
}
?>

Burada bir örnek ilk 3 doğru olan ama şimdi öyle değil döngü idgc.ca / web-tasarım-örnekleri-testing.php

6 Cevap

Kolay yolu modülü bölme operatörü kullanmaktır.

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

How this works: Modulus division returns the remainder. The remainder is always equal to 0 when you are at an even multiple.

Bir bit yeniği var: 0 % 3 0'a eşittir sizin sayacı 0 başlarsa bu beklenmedik sonuçlara neden olabilir..

sayaç 3'ün katı olup olmadığını kontrol etmek modülosunu kullanın.

Örneğin

// this isn't php but you should be able to get it
int x =3;

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

http://en.wikipedia.org/wiki/Modulo http://uk3.php.net/manual/en/language.operators.arithmetic.php

Her 3 ileti?

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

Nasıl hakkında: if (($ sayaç% $ display) == 0)

Ben bir "+" karakteri her 1000 yineleme göstermek için bu bir durum güncelleme kullanıyorum ve iyi çalışıyor gibi görünüyor.

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

@ Powerlord cevabı kapalı oluyor,

"There is one catch: 0 % 3 is equal to 0. This could result in unexpected results if your counter starts at 0."

Hala 0 (diziler, querys) adresinden sayacı başlar, ama ofset

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