PHP: Wie bestimmen Sie jede N-te Iteration einer Schleife?
Lesezeit: 2 Minuten
kwek-kwek
Ich wollte nach jedem 3. Post per XML ein Bild wiedergeben, hier ist mein Code:
<?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.
}
?>
Hier ist ein Beispiel, die ersten 3 sind korrekt, aber jetzt wird idgc.ca/web-design-samples-testing.php nicht wiederholt
Schlagen Sie vor, die Frage in etwas Aussagekräftigeres zu ändern, z. B. “Bild bei jeder N-ten Schleife anzeigen”.
– Gregor B
1. Juni 2009 um 19:17 Uhr
Der einfachste Weg ist die Verwendung des Modulodivisionsoperators.
if ($counter % 3 == 0) {
echo 'image file';
}
Wie das funktioniert: Die Moduldivision gibt den Rest zurück. Der Rest ist immer gleich 0, wenn Sie bei einem geraden Vielfachen sind.
Es gibt einen Haken: 0 % 3 gleich 0 ist. Dies könnte zu unerwarteten Ergebnissen führen, wenn Ihr Zähler bei 0 beginnt.
Modulus ist ein geeigneter Weg, dies zu tun, aber wenn Sie Millionen von Iterationen durchführen, kann dies zu einem Leistungsengpass werden, da Modulus eine Division beinhaltet. Verwenden Sie in diesem Fall besser einen 2. Zähler, vergleichen Sie ihn mit der gewünschten Zahl und setzen Sie ihn zurück, wenn er beim Vergleich übereinstimmt.
– bhelm
26. Mai 2016 um 8:12 Uhr
Ausgehend von der Antwort von @Powerlord,
“Es gibt einen Haken: 0 % 3 ist gleich 0. Dies könnte zu unerwarteten Ergebnissen führen, wenn Ihr Zähler bei 0 beginnt.”
Sie können Ihren Zähler immer noch bei 0 beginnen (Arrays, Abfragen), aber ihn versetzen
Schlagen Sie vor, die Frage in etwas Aussagekräftigeres zu ändern, z. B. “Bild bei jeder N-ten Schleife anzeigen”.
– Gregor B
1. Juni 2009 um 19:17 Uhr