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

惑星間節を除いて、各計算の値を返す必要があります。星間 (($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 に答える