2009-07-20 7 views
0

ich diesen Code habe:PHP-Logik, wenn statments

$distance= -1 ;//default 
//distance calc 
if($dgalaxy = $galaxy){ 
    if(($dx = $x) && ($dy = $y)) 
    { 
      //inter planitary currently unknown formula 
    }else{ 
      $distance = round(Sqrt(pow(($dx-$x),2)+pow(($dy-$y),2)));//interstllar 
    } 
}else{//intergalatic 
    if ($galaxy < $dgalaxy){ 
      $distance = (((9-fmod($galaxy,10))*200)+2000+(fmod($dgalaxy,10)*200));//anti clockwise galactic 
    }else{ 
      $distance = (((fmod($galaxy,10))*200)+2000+(fmod(9-$dgalaxy,10)*200));//clockwise galactic 
    } 
} 

Es soll einen Wert für jede Berechnung zurückzukehren, außer für die interplanetarische Klausel. für interstellare (wenn ($ dgalaxy = $ Galaxie) und die x, y-Koordinaten unterscheiden) dies führt die interstellare Formel und das funktioniert gut.

Aber, wenn $ dgalaxy! = $ Galaxy, kehrt es mit -1 zurück, was bedeutet, dass es keine der galaktischen Abstandsberechnungen ausführt!

Was habe ich falsch gemacht und wie kann ich es beheben?

Antwort

14

$dgalaxy = $galaxy ist eine Zuordnung kein Vergleich. Verwenden Sie ==.

Dito an anderer Stelle.

4

Sie verwenden = statt == oder ===:

$distance= -1 ;//default 
       //distance calc 
       // MISTAKE HERE. USE == INSTEAD of = 
       if($dgalaxy == $galaxy){ 
         if(($dx == $x) && ($dy == $y)) 
         { 
           //inter planitary currently unknown formula 
         }else{ 
           $distance = round(Sqrt(pow(($dx-$x),2)+pow(($dy-$y),2)));//interstllar 
         } 
       }else{//intergalatic 
         if ($galaxy < $dgalaxy){ 
           $distance = (((9-fmod($galaxy,10))*200)+2000+(fmod($dgalaxy,10)*200));//anti clockwise galactic 
         }else{ 
           $distance = (((fmod($galaxy,10))*200)+2000+(fmod(9-$dgalaxy,10)*200));//clockwise galactic 
         } 
       } 
3

Sollte es nicht $ dgalaxy == $ Galaxie sein? I.e. Gleichheitsüberprüfung, anstatt Zuweisung?