If..then..else Verschachtelung
ChrisL
- php
Hallo
Ich weiss das Problem ist für Profis banal, aber ich probiere schon seit einer Stunde und bekomme es einfach nicht hin.
Beispiel:
if ($kriterium1 == 0)
if ($kriterium2 == 0) {
Codezeile;
Codezeile;
}
else {
Codezeile;
Codezeile;
}
Wie setzte ich die Klammern richtig, damit sich 'else' auf $kriterium1 bezieht und nicht auf $kriterium2 wie im Moment.
Logisch fände ich...
if ($kriterium1 == 0) {
if ($kriterium2 == 0) {
Codezeile;
Codezeile;
}
} else {
Codezeile;
Codezeile;
}
... aber so geht es gar nicht.
Danke schonmal im Voraus und sorry falls ich Euch mit der Frage langweile ;)
cu
Chris
gudn tach!
Wie setzte ich die Klammern richtig, damit sich 'else' auf $kriterium1 bezieht und nicht auf $kriterium2 wie im Moment.
Logisch fände ich...
if ($kriterium1 == 0) {
if ($kriterium2 == 0) {
Codezeile;
Codezeile;
}} else {
Codezeile;
Codezeile;
}... aber so geht es gar nicht.
dann liegt der fehler woanders, denn dein logikverstaendnis truegt dich nicht. am beispiel wird's klarer:
if(A){
// A
if(B){
// A && B
}else
// A && not B
}
}else
// not A
}
die else-zweige koennen unabhaengig voneinander weggelassen werden, also z.b. (in deinem fall)
if(A){
// A
if(B){
// A && B
}
}else
// not A
}
oder (was du nicht willst)
if(A){
// A
if(B){
// A && B
}else{
// A && not B
}
}
prost
seth
Hallo seth
Vielen Dank!
War einer von der Sorte 'vor lauter Bäume den Wald nicht sehen'.
PHP und VBA verträgt sich schlecht, eine der Codezeilen war...
$ts = now();
Thx again und gute Woche
Chris
Hi ChrisL,
PHP und VBA verträgt sich schlecht, eine der Codezeilen war...
$ts = now();
Tipp: Schalte error_reporting auf E_ALL oder E_STRICT, dann bekommst du beim Entwickeln auch vernünftige Fehlermeldungen, in diesem Fall wäre etwas à la "Fatal Error: call undefined function now" oder so gekommen. Unter den Datums- und Zeitfunktionen im PHP-Manual findet sich dann schnell die gewünschte Funktion ;-)
Viele Grüße,
~ Dennis.
echo $begrüßung;
Tipp: Schalte error_reporting auf E_ALL oder E_STRICT, dann bekommst du beim Entwickeln auch vernünftige Fehlermeldungen,
E_STRICT ist ein einzelnes Bit, E_ALL hingegeben steht (derzeit = PHP5) für alles andere außer E_STRICT. Beide Konstanten sind also nichts das alternativ verwendet werden könnte, was dein "oder" aber normalerweise ausdrückt. Hinzu kommt noch, dass E_STRICT nur für OOP relevant wird, also für einen Großteil der PHP-Anwender nicht relevant wird.
Zusammengefasst: E_ALL für das error_reporting ist beim Entwickeln immer eine gute Idee, auch schon unter PHP4. E_STRICT kann man meist unbeachtet lassen. Außerdem braucht es noch ein eingeschaltetes display_errors, wenn man die Meldungen in der Ausgabe sehen möchte.
echo "$verabschiedung $name";
Nachmals Danke für die Hilfe allerseits. Ist echt nett und ich weiss die Unterstützung zu schätzen.
Tach.
Hinzu kommt noch, dass E_STRICT nur für OOP relevant wird, also für einen Großteil der PHP-Anwender nicht relevant wird.
Mir fallen spontan noch Meckereien zu date.timezone/TZ/date_default_timezone_set() und "only variables should be assigned by reference" ein, die ebenfalls als E_STRICT laufen aber nicht direkt mit OOP zu tun haben.
echo $begrüßung;
Hinzu kommt noch, dass E_STRICT nur für OOP relevant wird, also für einen Großteil der PHP-Anwender nicht relevant wird.
Mir fallen spontan noch Meckereien zu date.timezone/TZ/date_default_timezone_set() und "only variables should be assigned by reference" ein, die ebenfalls als E_STRICT laufen aber nicht direkt mit OOP zu tun haben.
Danke für die Ergänzung. Die Übergabe von Nicht-Variablen per Referenz ist mir nur bei PHP 4.4.x auf die Füße gefallen, und da war/ist das eine E_NOTICE-Meldung. E_STRICT gibt es ja erst in PHP 5.
Bei date() & co. ist es mir auch noch nicht aufgefallen, denn ich hatte E_STRICT wegen des Einsatzes von alter Fremdsoftware zunächst nicht aktiviert. Die Date and Time Functions wären dann also nach meinem jetzigen Erkenntnisstand etwas, bei dem auch weniger fortgeschrittene Programmierer mit E_STRICT in Berührung kommen.
Für mich bleibt E_STRICT dennoch ein Nice-to-have, das keine so gravierenden Vorteile wie E_ALL bringt.
echo "$verabschiedung $name";