0

我有这个代码:

$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
    }
}

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

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

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

4

3 回答 3

14

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

其他地方也一样。

于 2009-07-20T16:14:11.137 回答
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
                        }
                }
于 2009-07-20T16:15:16.140 回答
3

不应该是 $dgalaxy == $galaxy 吗?即相等检查,而不是赋值?

于 2009-07-20T16:16:32.347 回答