我有这段代码:
$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,这意味着它没有运行任何一个银河距离计算!
我做错了什么,我该如何解决?
答案 0 :(得分:14)
$dgalaxy = $galaxy
是作业,不是比较。使用==
。
同上其他地方。
答案 1 :(得分: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
}
}
答案 2 :(得分:3)
不应该是$ dgalaxy == $ galaxy?即平等检查,而不是分配?