Frage von Kart19, 44

PHP schnelle Hilfe JAVA?

Hallo, ich brauch bei folgendem Hilfe:

  1. und zwar wie formulieren meine While Schleife richtige?

While ($i=1 && $b>4){...........} oder While ($i==1 && $b>4){........} Muss ich $i mit zwei = in die Schleife schreiben oder mit einem?

  1. Was passiert, wenn ich eine If Abfrage nur mit einem = versehe. Sprich: if($i=2 && $b>6){...........} Ist das nun eine Zuweisung und mein $i bekommt nun den Wert 2 oder wird die IF- Anweisung einfach übersprungen?

Hoffe mir kann jemand helfen... Danke schonmal

Antwort
von Dory1, 26

In PHP ist = der Zuweisungsoperator, == der Vergleichsoperator.

if($i = 2 && $b > 6) { ... } 

wird ausgewertet wie 

if(2 && $b > 6) { ... } 


Alles außer 0 ist true (oder besser gesagt "truthy", denn wirklich true ist nur der Wert true ;). 

if(true && $b > 6) { ... } 
Der if-Block wird also in diesem Fall ausgeführt.
Kommentar von Dory1 ,

... vorausgesetzt natürlich dass die zweite Bedingung $b > 6 auch true ist ;)

Antwort
von Suboptimierer, 28

== ist richtig. In Java bekommst du bei = einen Fehler. Wie das in PHP aussieht, weiß ich nicht. 

= bedeutet "Zuweisung"
== bedeutet "Vergleich"

In manchen Programmiersprachen musst du sogar noch klammern: (($i==1) && ($b>4)), weil das && stärker bindet als die Vergleichsoperatoren.

Ich würde sicherheitshalber immer klammern und nie Zuweisungen in einen if- oder while-Kopf packen.

Kommentar von rmnstr ,

In Java kann man Zuweisungen in if-Bedingungen schreiben. Nur keine Deklarationen.

int numberOfPeople = 0;
if ((numberOfPeople = countPeople()) > 0) {
// do stuff
}
Kommentar von Suboptimierer ,

Okey, dann habe ich das mit JavaScript verwechselt. 

Ich würde jedenfalls davon abraten. Einfach die Zuweisung davor ziehen und schon stellt sich die Frage gar nicht.

Ohne deine Klammerung wäre es noch schlimmer. Ich müsste mir alle paar Monate nachschlagen, in welcher Reihenfolge vorgegangen wird.

Kommentar von EightSix ,

In welcher Sprache ist das mit den Klammern in der Art und Weise notwendig?

Kommentar von Suboptimierer ,

Ich habe mal etwas nachgeschlagen

Vergleich vor logischer Verknüpfung:

  • Visual Basic
  • C#
  • C++
  • PHP
  • Java
  • JavaScript
  • Fortran

Logische Verknüpfung vor Vergleich:

  • Object Pascal

Du hast also recht. In der Regel wird der Vergleich vor der logischen Verknüpfung durchgeführt.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten