2009-07-20 64 views
0

我有这样的代码:PHP逻辑如果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 
    } 
} 

应该为每个计算返回一个值除帧间行星子句。对于星际(当($ dgalaxy = $ galaxy)和x,y坐标不同)时,这将运行星际公式并且工作正常。

但是,当$ dgalaxy!= $ galaxy时,它返回-1,这意味着它没有运行任何一个银河系距离计算!

我做了什么错,我该如何解决?

回答

14

$dgalaxy = $galaxy分配不是比较。使用==

其他地方也一样。

4

您使用的替代= ==或===:

$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

它不应该是$ dgalaxy == $星系?即平等检查,而不是分配?