PHP-if语句工作不正常
我目前在一个项目,使拍卖网站。为了确保人们在当前出价的基础上不能出价太少,我发表了以下声明:PHP-if语句工作不正常,php,if-statement,Php,If Statement,我目前在一个项目,使拍卖网站。为了确保人们在当前出价的基础上不能出价太少,我发表了以下声明: if( ($this->getHighestBid() < 50 && $this->getHighestBid() >= 0 && $bid > $this->getHighestBid()+0.50) || ($this->getHighestBid() < 500 && $this-&g
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)
){
...
}
这样,当当前最高出价在指定范围内时,您必须将价格至少提高指定的价格。
我的问题是,它根本不让我出价。有人知道这里发生了什么吗?这是您的代码:
$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';
}
?>
当我更改参数时,它总是工作正常。我猜你的问题出在其他地方。你的代码在我的测试中似乎正常工作,听起来变量的类型不是数字类型float或整数,而是字符串或类似的奇怪类型 确认:
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()) {
}
// ...
乍一看,我相信您可能需要将$this->getHighestBid存储在变量中。我是否建议您更改此设置,并创建一个$this->getMinimumBidIncrement方法来处理您在这里编写的逻辑?这当然会使事情更容易阅读和理解。你为什么不根据最高出价的百分比值来处理它,例如出价超过最高出价10%以上:如果$bid-$this->getHighestBid getHighestBid/10{}@mlefvre我一开始打算这么做,但最终我们还是选择了这个系统,因为项目的成员发现它更有效。你应该这样写$this->getHighestBid<50&&$this->getHighestBid>=0他的代码已经可以工作了,正如我所做的,你的代码没有工作,投了反对票,因为在有问题的好代码中发布坏代码。这些数字到底是如何处理的?我同时在需要的地方添加了>=并且这个if语句已经在函数中了。我的意思是502的出价将进入语句的else部分。我提供的代码可以工作,但是您需要分配$bid和$this->getHighestBid。我刚刚清理了代码并提供了解释。echo$bid。“-”$此->获取最高出价;。在if语句之前编写此代码,这样您就可以检查变量的值,否则我们将很难帮助您。@Wissam El Kik尝试输入最高出价500,您的代码有效吗?这里有一个输入错误:$$hbid