【问题标题】:PHP logic if statmentsPHP 逻辑 if 语句
【发布时间】:2009-07-20 16:12:25
【问题描述】:

我有这个代码:

$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,这意味着它没有运行任何一个星系距离计算!

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

【问题讨论】:

    标签: php logic


    【解决方案1】:

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

    其他地方也一样。

    【讨论】:

      【解决方案2】:

      你使用 = 而不是 == 或 ===:

      $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 == $galaxy吗? IE。相等性检查,而不是赋值?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多