Logik einer "&&" Frage
danOne
- php
Guten Morgen an alle,
Ich dreh hier gleich ab und ich zweifle gerade an meinem gesammten Wissen:
Also ich habe ein langes skript das hier jetzt mal nicht posten will aber gaaaaanz am ende werden 5 Vraiablen mittels empty() auf ihre Füllung hin überprüft. Der Block soll nur betreten werden wenn alle 5 leer sind bzw gar nich initialisiert sind.
ich habe eine ausgabe dirket vor der abfrage eingebaut. deren ausgabe sieht so aus:
i =3-32434-3434-3
a =
t =
h =
r = 1
eine zeile später ist die abfrage:
if(empty($is) && empty($a) && empty($t) && empty($h) && (empty($r) || $r==1))
Dieser Block soll nur betreten werden, wenn ALLE 5 leer bzw r=1 ist, wie man sehen kann ist r zwar = 1 aber i ist nicht leer, der block wird aber trotzdem ausgeführt. WARUM DENN NUR?
Vielen dank für den rettenden Gedanken
schönen Gruß
.dan.One.
Hi,
if(empty($is) && empty($a) && empty($t) && empty($h) && (empty($r) || $r==1))
Dieser Block soll nur betreten werden, wenn ALLE 5 leer bzw r=1 ist, wie man sehen kann ist r zwar = 1 aber i ist nicht leer, der block wird aber
trotzdem ausgeführt. WARUM DENN NUR?
Weil i und is zwei verschiedene Dinge sind...
cu,
Andreas
Sorry,
da is bei copy & paste wohl was flöten gegengen da steht bei beiden derselbe variablenname.
schönen Gruß
.dan.One.
Poste mal Dein Script.
hi,
hatte ich grade vor als mir da doch eine kleine unstimmigkeit auffiel, jetzt hab ich den fehler gefunden, lag nicht an der abfrage aber wenn man sich da erstmal drauf eingeschossen hat, sieht man ja meißt nix anderes mehr.
ich geh jetzt meinen kopf gegen die wand haun
schönen Gruß
.dan.One.
Hallo,
if(empty($is) && empty($a) && empty($t) && empty($h) && (empty($r) || $r==1))
Auch wenn sich dein Problem schon gelöst hat, noch ein Tip:
Wenn du solche Bedingungen hast, die mit einem logischen 'oder' Verknüpft sind, solltest du immer den einfacher zu prüfenden Teil an den Anfang schreiben. In deinem Fall:
if ($r == 1 || ...)
Der ganze Ausdruck wird ja wahr, wenn mindestens ein Teilausdruck wahr ist. Wenn also der erste (am einfachsten/schnellsten zu überprüfende) Ausdruck schon wahr ist, muß der zweite/n-te überhaupt nicht mehr geprüft werden. Das ist immer gut für die Performance.
In diesem Fall macht es wohl wenig Unterschied, es ist aber eine gute Idee, wenn man sich das prinzipiell angewöhnt.
Gruß, Jan