Gå til innhold

For hver 5. så..


Anbefalte innlegg

Heisann!

 

Jeg lurte litt på den enkleste måten å få noe til å bli printet ut etter feks 5 ting har blitt printet ut.

Søkte litt rundt men fant ikke noe i den duren!

 

Så ja hvis jeg printer ut fra databasen 5 innlegg så skal det komme opp noe mellom det 5 og 6 innlegget samme med det 10 og 11!

 

Noen som kan hjelpe meg litt?

 

Takker!

Endret av Id3fiX
Lenke til kommentar
Videoannonse
Annonse
En løsning som er noen hakk mer elegant:

 

$i = 0; // Eller 1, alt ettersom
while (...) {
   if (($i % 5) == 0) { print "voff"; }
   $i++;
}

9226619[/snapback]

bare for pirkingens del :p:

$i = 0; // Eller 1, alt ettersom
while (...) {
   if (($i++ % 5) == 0) { print "voff"; }
}

 

En linje mindre :w00t:

Endret av Manfred
Lenke til kommentar
En løsning som er noen hakk mer elegant:

 

$i = 0; // Eller 1, alt ettersom
while (...) {
   if (($i % 5) == 0) { print "voff"; }
   $i++;
}

9226619[/snapback]

bare for pirkingens del :p:

$i = 0; // Eller 1, alt ettersom
while (...) {
   if (($i++ % 5) == 0) { print "voff"; }
}

 

En linje mindre :w00t:

9227119[/snapback]

 

For pirkingens skyld skal det nevnes at ++$i er raskere enn $i++. Dermed er Oracel sitt eksempel (etter $i++ er omgjort til ++$i) i teorien raskere og dermed bedre, siden ditt eksempel ikke kan omgjøres til ++$i. :p

Endret av jorgis
Lenke til kommentar
hehehe! Så for at siden skal lastes fortere, så burde jeg bruk ++$i da? :p

Er vel minimal forskjell!? :p

9229450[/snapback]

 

Er minimal forskjell, ja, men om du gjør veldig mye iterasjon (gjerne noen millioner/mrd. iterasjoner) er det kanskje noen hundredeler å hente. :)

 

"We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil."
Lenke til kommentar
Hvorfor er det raskere? Og hvor mye snakker vi om her da?

9233360[/snapback]

 

$i++ inkrementerer $i _etter_ at verdien til $i er returnert, med andre ord må det opprettes en midlertidig minneverdi for $i's nye verdi. ++$i inkrementerer $i med en gang, så her skjer det ingen kopiering av data eller ekstra tilordning av minne. :)

 

Har testet litt hva forskjellen er:

<?php
while ($i < 10000000)
{
$i++;
}
?>

 

Den itererer 10 millioner ganger over $i, og jeg har laget to versjoner (en med $i++ og en med ++$i), som jeg har kjørt fem ganger hver og tatt gj.snitt av.

 

++$i = 1.912 sekunder, 0.000000191s per iterasjon

$i++ = 2.4686 sekunder, 0.000000247s per iterasjon

 

Forskjellen er med andre ord minimal med mindre du skal ha veldig mange iterasjoner. Ved ti millioner iterasjoner er forskjellen 500ms og merkbar, men ved 1 000 iterasjoner vil forskjellen bare være 0.05566 ms. :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...