Wie gebe ich bei PHP mehrere Bedingungen in einer Schleife ein?
Hallo,
ich möchte gerne 2 Bedingungen in einer PHP for – Schleife unterbringen.
Dazu habe ich mich an diese Anleitung gehalten und die beiden Bedingungen mit dem && Operator verknüpft.
Trotzdem bekomme ich ständig die Fehlermeldung, das PHP kein ; (Strichpunkt) erwartet, sondern eine schließende runde Klammer.
Mein Editor zeigt mir den Fehler in der zweiten for – Schleife bei der Variablen $tageszahl an. Dort wird der Strichpunkt bemängelt.
Desweiteren habe ich versucht, beide Bedingungen zusätzlich in runde Klammern zu setzten. Da wird dann außer dem Strichpunkt auch noch der && Operator bemängelt.
Hier ist mein Code:
<table border="1">
<tr>
<th>Mo</th>
<th>Di</th>
<th>Mi</th>
<th>Do</th>
<th>Fr</th>
<th>Sa</th>
<th>So</th>
</tr>
<?php
$reihen = 6;
$zellen = 7;
$enddatum_monat = date("t");
for($tr = 1; $tr <= $reihen; $tr++ ) {
echo "<tr>";
for($td = 1; $td <= $zellen; $td++ && $tageszahl = 1; $tageszahl <= $eintrag; $tageszahl++) {
echo "<td> $tageszahl </td>";
}
echo "</tr>";
}
?>
</table>
Es wäre nett, wenn mir jemand zeigen würde, wie mehrere Bedingungen korrekt in einer Schleife untergebracht werden.
Danke
2 Antworten
Mit dem "&&"-Operator kannst du boolsche Ausdrücke miteinander verknüpfen.
Was du hier doppelst ist aber nicht die Abbruchbedingung, sondern die ganze Schleife.
Was du möchtest wäre nicht
for($td = 1; $td <= $zellen; $td++ && $tageszahl = 1; $tageszahl <= $eintrag; $tageszahl++)
sondern
for($td = 1, $tageszahl = 1; ($td <= $zellen) && ($tageszahl <= $eintrag); $td++, $tageszahl++)
EDIT:
Es zählt im übrigen eher als Bad-Practice mehrere Zählvariablen in einer For-Schleife zu haben würde ich behaupten.
Zumindest sieht man es eher selten.
Ich wollte eigentlich so einen kleinen Monatskalender wie den von Schattenbaum erstellen:
https://www.schattenbaum.net/php/kalender.php
Wenn die Lösung mit mehreren Bedingungen nicht optimal ist, dann hat das also Schattenbaum auch nicht korrekt gelöst? (Programmierzeile 25)
Seh ich das richtig?
Mehrere Abbruchbedingungen sind generell kein Problem und durchaus üblich. Mehrere Initialisierungen und Inkrementierungen sind aber nicht so üblich.
Das, was du verlink hast, hat in Zeile 25 aber auch garkeine mehreren Abbruchbedingungen, sondern nur eine. Diese eine ist aber recht unübersichtlich, somit nicht gut.
Wie gebe ich bei PHP mehrere Bedingungen in einer Schleife ein?
Gar nicht. Eine for-next-Schleife hat einen Zähler. Dieser wird inkrementiert. Sobald dieser Zähler den Wert der Ende-Bedingung erreicht hat, wird die Schleife verlassen.
Das hier geht nicht:
for($td = 1; $td <= $zellen; $td++ && $tageszahl = 1; $tageszahl <= $eintrag; $tageszahl++)
Was willst du denn erreichen?
Alex
Ich lerne noch PHP und möchte gerne einen kleinen Monatskalender wie hier erstellen:
https://www.schattenbaum.net/php/kalender.php
Leider steige ich da aber nicht so ganz durch den Code und ich glaube der Kalender von Schattenbaum stammt noch aus PHP 5 Zeiten.
Ich selber möchte folgendes Schritt für Schritt versuchen
Zuerst möchte ich versuchen, eine Tabelle mit 7 Zellen (Mo – So) zu erstellen, wobei in jeder Zelle der fortlaufende Tag des Monats angezeigt wird.
Danach wollte ich erreichen, dass der Erste des Monats auch dem korrekten Tag der Woche zugewiesen wird.
Und zum Schluß würde ich gerne die leeren Felder am Monatsanfang bzw. Monatsende mit den Tagen des Vormonats bzw. des Folgemonats auffüllen.
Jo, die Klammern sind aber überflüssig