BlackBoard » Design, Programmierung & Entwicklung » Programmieren » PHP Logikfehler (erledigt) » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Logikfehler (erledigt)
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Logikfehler (erledigt)       Zum Anfang der Seite springen

[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:
  • Wenn $this->NavigationTree['IsSub'][$count] = TRUE ist sollte die Aussage der ersten Klammer 1 sein.
  • Wenn $PrintSubs = FALSE ist, sollte die Aussage in der 2. Klammer 0 sein.
  • Klammer 1 und Klammer 2 mit logischem UND verknüpft sollte 0 sein.
  • In der dritten Klammer haben wir wieder $this->NavigationTree['IsSub'][$count]. Aber da hier ja geprüft wird, ob die Aussage FALSE ist, sollte die Aussage 0 sein.
  • Wenn wir jetzt die 0 und die 0 mit einem logischen ODER verknüpfen sollte 0 rauskommen. Also sollte die Schleife nicht durchlaufen werden.

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

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Compuholic: 02.10.2005 00:20.

01.10.2005 23:04 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
HeaD HeaD ist männlich
Hoffnungsloser Sozialfall in Behandlung bei Styx


images/avatars/avatar-2266.gif

Dabei seit: 31.08.2001
Beiträge: 4.142
Herkunft: Mama

      Zum Anfang der Seite springen

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...

__________________

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von HeaD: 02.10.2005 00:27.

02.10.2005 00:22 HeaD ist offline E-Mail an HeaD senden Homepage von HeaD Beiträge von HeaD suchen
deklarmart
Aufsteiger


images/avatars/avatar-138.jpg

Dabei seit: 02.01.2003
Beiträge: 85
Herkunft: Germany

      Zum Anfang der Seite springen

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.^^

__________________
Uns ist in alten maeren aa wunders vil geseit
von hackern lobebaeren, aa von großer apachenheit
von rooten, lan-partis, aa von win und dos,
von küener hacker striten, aa muget ir nu linux hoern sagen.

Linux-Edda
02.10.2005 03:15 deklarmart ist offline E-Mail an deklarmart senden Beiträge von deklarmart suchen
Cpt.Miller Cpt.Miller ist männlich
BlackBoarder


Dabei seit: 14.08.2003
Beiträge: 644
Herkunft: Stuttgart

      Zum Anfang der Seite springen

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#
02.10.2005 03:56 Cpt.Miller ist offline E-Mail an Cpt.Miller senden Homepage von Cpt.Miller Beiträge von Cpt.Miller suchen
HeaD HeaD ist männlich
Hoffnungsloser Sozialfall in Behandlung bei Styx


images/avatars/avatar-2266.gif

Dabei seit: 31.08.2001
Beiträge: 4.142
Herkunft: Mama

      Zum Anfang der Seite springen

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

__________________

02.10.2005 15:32 HeaD ist offline E-Mail an HeaD senden Homepage von HeaD Beiträge von HeaD suchen
Compuholic Compuholic ist männlich
knows where he wants to go tomorrow


images/avatars/avatar-552.jpg

Dabei seit: 19.10.2002
Beiträge: 819
Herkunft: München

Themenstarter Thema begonnen von Compuholic
      Zum Anfang der Seite springen

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.
02.10.2005 18:12 Compuholic ist offline E-Mail an Compuholic senden Homepage von Compuholic Beiträge von Compuholic suchen
HeaD HeaD ist männlich
Hoffnungsloser Sozialfall in Behandlung bei Styx


images/avatars/avatar-2266.gif

Dabei seit: 31.08.2001
Beiträge: 4.142
Herkunft: Mama

      Zum Anfang der Seite springen

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....

__________________

02.10.2005 19:01 HeaD ist offline E-Mail an HeaD senden Homepage von HeaD Beiträge von HeaD suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » PHP Logikfehler (erledigt)

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH