BlackBoard (http://www.black-board.net/index.php)
- Design, Programmierung & Entwicklung (http://www.black-board.net/board.php?boardid=55)
-- Programmieren (http://www.black-board.net/board.php?boardid=4)
--- PHP Logikfehler (erledigt) (http://www.black-board.net/thread.php?threadid=21227)


Geschrieben von Compuholic am 01.10.2005 um 23:04:

  Logikfehler (erledigt)

[edit]Ich bin jetzt endlich selbst drauf gekommen. Es war ein Tippfehler. Es kann gelöscht werden.[/edit]

Ich habe gerade ein Problem mit Booleanscher Logik.

Ich habe folgende if-Abfrage
php:
1:
2:
if ((($this->NavigationTree['IsSub'][$count] == TRUE) and ($PrintSubs == TRUE)) or 
($this->NavgationTree['IsSub'][$count] == FALSE))


Seltsamerweise wird die Schleife immer durchlaufen.
Ein Beispiel:

Die Schleife wird aber unter den obengenannten Vorraussetzungen durchlaufen. Habe ich irgendwo einen Logikfehler gemacht?



Geschrieben von HeaD am 02.10.2005 um 00:22:

 

Also AND und OR gibts in PHP so gar nicht, hoffe Du weißt das, stattdessen nimmt man && (and) und || (or)

so sollte es eigendlich gehen:

php:
1:
if ((($this->NavigationTree['IsSub'][$count] == TRUE) && ($PrintSubs == TRUE)) || ($this->NavgationTree['IsSub'][$count] == FALSE))


Wenn das immer noch nicht geht, dann überprüf mal was in den Variablen steht...

Edit:
Dein Text hab ich nicht ganz verstanden, ich denke Du willst es so (ja?):
Wenn NavigationTree['IsSub'][$count] UND $PrintSubs gleich 1 sind dann soll er die Schleife durchlaufen, ODER wenn $this->NavgationTree['IsSub'][$count] =gleich 0 ist... in allen anderen Fällen soll sie nicht durchlaufen werden...



Geschrieben von deklarmart am 02.10.2005 um 03:15:

 

AND statt && oder OR statt || funktioniert bei mir sehr wohl. hab mich auch
sehr gewundert, als ich mal zwischen paar ASP scripts mal wieder eins in PHP
geschrieben hab und mich halt in einer if($test = 1 OR $test = 2) anweisung
vertippt habe Augenzwinkern
ich benutze die PHP version 4.4, was davor ist weiß ich nicht.^^



Geschrieben von Cpt.Miller am 02.10.2005 um 03:56:

 

Ich kann ebenfalls bestätigen das AND (&&) und OR (||) in PHP implementiert sind, muss allerdings noch sagen, dass ich die && & || Schreibweise bevorzuge, wahrscheinlich noch wegen C/C++/C#



Geschrieben von HeaD am 02.10.2005 um 15:32:

 

Mhh, vielleicht liegt es an der PHP Version, bei mir kommt dann ein Fehler ....



Geschrieben von Compuholic am 02.10.2005 um 18:12:

 

Naja, das funktioniert schon alles wieder. Wie in meinem Edit schon erwähnt:

Das ganze Problem war ein Tippfehler: Ich hatte in der 2. Zeile folgendes geschrieben:
php:
1:
$this->NavgationTree ...

Diese Variable gibt es natürlich nicht und damit wird die Bedingung auch nicht richtig geprüft.

[offtopic]Das ist etwas, was mich ein wenig bei PHP anstinkt. Das man Variablen einfach definieren kann, indem man sie benutzt. Das macht die Fehlersuche so viel komplizierter. Sobald man sich bei einem Variablennamen vertippt hat wird statt einer Warnung einfach eine neue Variable definiert.



Geschrieben von HeaD am 02.10.2005 um 19:01:

 

Mach es so wie ich, erstell eine Funktion namens Debug oder sowas, die Du bei Bedarf aufrufen kannst und die Dir alle Variablen anzeigt. z.B. in einem Frame oder so....


Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH