$i=0;
while ($row=mysql_fetch_assoc()) {
if ($i==0) echo "First"
$i++;
}
Zugriff direkt auf mysqli pointer? ein PHP-Klasse wie Iterator?Existiert eine Alternative schöner in dieser Schleife?
Danke.
$i=0;
while ($row=mysql_fetch_assoc()) {
if ($i==0) echo "First"
$i++;
}
Zugriff direkt auf mysqli pointer? ein PHP-Klasse wie Iterator?Existiert eine Alternative schöner in dieser Schleife?
Danke.
Wenn Sie versuchen, das erste Element für etwas Besonderes zu verwenden, dann vielleicht so etwas wie:
$row=mysql_fetch_assoc();
//do stuff to first row
do {
//do stuff to all rows (including the first)
} while ($row=mysql_fetch_assoc());
Ansonsten habe ich keine Ahnung, was die Frage ist, und ich bin kein PHP-Typ ...
ich würde verwenden:
if ($row = mysql_fetch_assoc()) {
// process first item
while ($row = mysql_fetch_assoc()) {
// process following items
}
}
Sie haben noch keine Methode für genau wissen Position in jedem Moment?
zum Beispiel implementiert Java Iterator next oder hasNext(), wenn! HasNext() das Element das letzte ist.
Bitte editiere deine Frage und nutze nicht die Antwortfunktion. Sie können dies objektorientiert mit einem Iterator implementieren, wenn Sie möchten. – Gumbo
$first = true;
while ($row=mysql_fetch_assoc()) {
if ($first) echo "First"
$first = false;
}
Um Zeilen mit dieser Methode zu alternieren, tun Sie einfach $ first =! $ First. –
das ist das gleiche –
Wahre David, wahr. Aber es ist die einzige trockene Art, es zu tun, es gibt keinen anderen Weg. DB-Objekte mit Iteratoren sind entweder selten oder Teil eines Frameworks. –
gut, wenn ich richtig verstehe Ihre Frage, möchten Sie die erste Zeile und dann die anderen durchlaufen:
$row = mysql_fetch_assoc(); // $row contains first row
while ($row = mysql_fetch_assoc()) { // loop through the rest of the rows
}
-1! Ich würde das nicht benutzen. Eine while-Schleife wird nur während TRUE ausgeführt, was zuerst überprüft wird. Daher ist die IF doppelzüngig, da die Schleife sowieso nicht ausgeführt würde, wenn sie alleine gelassen würde. –
@Die Böse Flea: Das ist falsch. Die erste $ row = mysql_fetch_assoc() prüft, ob Daten vorhanden sind (false, wenn keine vorhanden sind), die zweite prüft, ob mehr als eine Zeile in der Ergebnismenge vorhanden ist (mysql_fetch_assoc() verschiebt den internen Ergebniszeiger). Also Gumbo hat absolut Recht. –
@Die böse Flea: Das ist falsch. Wenn die 'if'-Contition wahr ist, würde' $ row' den ersten Datensatz enthalten und kann in "process first item" verarbeitet werden. Und nur wenn es mehr als einen Datensatz gibt, wird die "while" Bedingung erfüllt und iteriert den Rest. – Gumbo