2009-07-20 11 views
0

I ayant ce code:logique PHP si 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 
    } 
} 

Il doit renvoyer une valeur pour chaque calcul à l'exception de la clause inter planétaire. pour interstellaire (quand ($ dgalaxy = $ galaxy) et les coordonnées x, y diffèrent) cela lance la formule interstellaire et cela fonctionne bien. Mais, quand $ dgalaxy! = $ Galaxy, il retourne -1, ce qui signifie qu'il ne gère aucun des calculs de distance galactique!

Qu'est-ce que j'ai fait de mal et comment puis-je le réparer?

Répondre

14

$dgalaxy = $galaxy est une mission pas une comparaison . Utilisez ==.

Idem ailleurs.

4

Vous utilisez = au lieu de == === ou:

$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

ne devrait-il $ dgalaxy == galaxie $? C'est à dire. vérification de l'égalité, plutôt que cession?