2011-01-08 8 views
0

ich meist das Schaltergehäuse für String-Werte verwenden. Kann jemand bestätigen, ob sie für die Gleichheit komplexer Objekte verwendet werden können und ob die Objekte auch verschieden sind? Wie Sie sehen können, überprüfe ich nicht immer obj1 == andere Objekte. Beide Objekte können sich ändern. Kann mir jemand sagen, was wäre die richtige Syntax dafür, wenn es erlaubt ist? Ich bin mir nicht sicher was ich als switch() eingeben würde.Schalter für verschiedene Objekte zu vergleichen

if ($obj1 == $obj9) 

elseif ($obj5 == $obj9) 

elseif ($obj5 == $obj1) 

else 

neuer Code, wäre das korrekt?

switch (true){ 
    case $obj1 == $obj9: 
      //do something 
      break; 
    case $obj5 == $obj9: 
      //do something 
      break; 
    case $obj5 == $obj1: 
      //do something 
      break; 
    case default: 
      //do something 
      break; 
} 
+0

Da Sie vergleicht drei Objekte miteinander, die nicht in einem Schalter passen würde, es sei denn du hast 'Schalter (true)' (das nicht das, was das Konstrukt für beabsichtigt war). Ihr if-elseif-else scheint der richtige Weg zu sein. – BoltClock

+0

@BoltClock, meinst du wie der Code, den ich hinzugefügt habe? Was würde passieren, wenn ich switch (true) verwenden würde, auch wenn das nicht beabsichtigt war? – silow

+0

Es wird funktionieren (btw 'default:' 'nicht Fall default:') trotzdem. Ich machte nur weiter, wie wenn - Sonst mehr Sinn machen würde als ein Schalter. Siehe Kel's Antwort für warum. – BoltClock

Antwort

1

Nach PHP Manual, switch-case-Anweisung ist gleich "if" Anweisung mit "==" Vergleich. Also, es macht Vergleich nach Regeln. Aufgaben werden in Übereinstimmung mit objects comparison rules verglichen.

BTW switch-case-Anweisung wird verwendet, typischerweise einen Wert gegen Satz von mehreren anderen Werten zu vergleichen, während if-else-Konstruktion in Frage 3 Paare verschiedener Variablen vergleicht.

Verwandte Themen