2009-07-20 56 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 == $星系?即平等檢查,而不是分配?