[英]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.