繁体   English   中英

PHP-if语句无法正常工作

[英]PHP - if-statement not working properly

我目前正在制作拍卖网站。 为了确保人们的出价不会超过当前出价,我做了以下if陈述:

if(
    ($this->getHighestBid() < 50 && $this->getHighestBid() >= 0 && $bid > $this->getHighestBid()+0.50) ||
    ($this->getHighestBid() < 500 && $this->getHighestBid() >= 50 && $bid > $this->getHighestBid()+1) ||
    ($this->getHighestBid() < 1000 && $this->getHighestBid() >= 500 && $bid > $this->getHighestBid()+5) ||
    ($this->getHighestBid() < 5000 && $this->getHighestBid() >= 1000 && $bid > $this->getHighestBid()+10) ||
    ($this->getHighestBid() >= 5000 && $bid > $this->getHighestBid()+50)            
){
...
}

这样可以确保当前的最高出价在指定范围内时,您必须至少将价格提高指定的价格。 我的问题是,它根本不允许我出价。 有人知道这是怎么回事吗?

您的代码在我的测试中似乎可以正常工作,听起来变量的类型不是数字类型(浮点型或整数),实际上是字符串或类似的奇怪类型。

确认:

var_dump($this->getHighestBid());

我想在写我的答案时添加一点,尽管您可能希望编辑代码以使其更像:

function getMinimumBid() {
     $maxBid = (float)$this->getHighestBid();
     return $maxBid + $this->getBidIncrement();
}

function getBidIncrement() {
     $maxBid = (float)$this->getHighestBid();
     switch (true) {
          case $maxBid < 50:
              return 0.50;
          case $maxBid < 500:
              return 1;
          case $maxBid < 1000:
              return 5;
          case $maxBid < 5000:
              return 10;
          default:
              return 50;
     }
}

// ...
    if ($bid >= $this->getMinimumBid()) {
    }
// ...

这是您的代码:

$highest_bid = $this->getHighestBid();
if(
    ($highest_bid < 50 && $highest_bid >= 1 && $bid > ($highest_bid+0.50)) ||
    ($highest_bid < 500 && $highest_bid >= 50 && $bid > ($highest_bid+1)) ||
    ($highest_bid < 1000 && $highest_bid >= 500 && $bid > ($highest_bid+5)) ||
    ($highest_bid < 5000 && $highest_bid >= 1000 && $bid > ($highest_bid+10)) ||
    ($highest_bid >= 5000 && $bid > ($highest_bid+50))       
){
    // Condition 1:
    // Highest bid should be >= 1 and < 50
    // Bid should be > 1.5 and < 50.5

    // Condition 2:
    // Highest bid should be >= 50 and < 500
    // Bid should be > 51 and < 501

    // Condition 3:
    // Highest bid should be >= 500 and < 1000
    // Bid should be > 505 and < 1005

    // Condition 4:
    // Highest bid should be >= 1000 and < 5000
    // Bid should be > 1010 and < 5010

    // Condition 5:
    // Highest bid should be >= 5000
    // Bid should be > 5050
}

这里有一个主要问题:

  • 有些数字没有处理。
  • 您应该考虑在函数中执行此业务逻辑。

我稍稍更改了您的代码,因此可以在IDE中执行它:

    <?php
    $hbid = 50;
    $bid = 52;
if(
    ($hbid < 50 && $hbid >= 0 && $bid > $hbid+0.50) ||
    ($hbid < 500 && $hbid >= 50 && $bid > $hbid+1) ||
    ($hbid < 1000 && $hbid >= 500 && $bid > $hbid+5) ||
    ($hbid < 5000 && $hbid >= 1000 && $bid > $hbid+10) ||
    ($hbid >= 5000 && $bid > $hbid+50)            
)
{
    echo "ok";
}
else
{
    echo 'not ok';
}
?>

当我更改参数时,它总是可以正常工作。 我想你的问题出在别的地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM