我有以下代码,它根据天数的差异计算"博格"的数量。我调出我的$days
变量来检查差异有多少天。根据这一点,我在某一天的差异是38天。为什么当我回显$borg
时,它仍然显示0的数量?在本例中,$days = 38
。
$vandaag = date($format, strtotime('today'));
$verschil = $interval->d;
$diff = strtotime($retourdatum) - strtotime($vandaag);
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
echo $days;
if($days > 0)
{
$borg = 80;
}
if($days<0 && $days>-7)
{
$borg = 65;
}
if($days>-7 && $days<-14)
{
$borg = 50;
}
if($days>-14 && $days<-21)
{
$borg = 35;
}
if($days>-21 && $days<-28)
{
$borg = 20;
}
if($days>-28 && $days<-35)
{
$borg = 5;
}
else
{
$borg = 0;
}
您的最后两个条件块是这个特定问题的原因:
if($days>-28 && $days<-35)
{
$borg = 5;
}
else
{
$borg = 0;
}
第一种适用于$days
大于负28和同时小于负35的情况。这是不可能的,因此else
始终适用,而$borg
始终为零。您的所有其他if
语句都不会以任何方式与后两个语句相关联,因此它们总是经过评估的。你的其他if
中至少有三个有同样的问题:他们设置了一个不可能满足的条件。
我认为这就是你想要做的:为$borg
设置一个值,该值随着$days
变得更负而变小。如果你使用else if
条件,你不必每次都重复和反转以前的条件,而且更容易看到你在做什么(比如说,当你不小心翻转了<
和>
时,这很有帮助):
$borg = 0;
if($days > 0)
{
$borg = 80;
}
else if ($days > -7)
{
$borg = 65;
}
else if ($days > -14)
{
$borg = 50;
}
else if ($days > -21)
{
$borg = 35;
}
else if ($days > -28)
{
$borg = 20;
}
else if ($days > -35)
{
$borg = 5;
}
因为上一个else
将始终将$borg
设置为0,除非对其相应的if
进行求值。
解决方案是在所有if
语句之前定义$borg = 0;
,并去掉else
语句。
$borg = 0;
if( ... )
{
}
...
我真的不明白你在计算什么,但我清楚地明白为什么你在borg中总是有0。
以下代码应该可以解决您的问题:
$vandaag = date($format, strtotime('today'));
$verschil = $interval->d;
$diff = strtotime($retourdatum) - strtotime($vandaag);
$days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
echo $days;
if($days > 0)
{
$borg = 80;
}
elseif($days<0 && $days>-7)
{
$borg = 65;
}
elseif($days>-7 && $days<-14)
{
$borg = 50;
}
elseif($days>-14 && $days<-21)
{
$borg = 35;
}
elseif($days>-21 && $days<-28)
{
$borg = 20;
}
elseif($days>-28 && $days<-35)
{
$borg = 5;
}
else
{
$borg = 0;
}
这样,只有当所有语句都为false时,才会执行$borg=0代码。
您应该使用elseif。进行每个if计算,然后以if/else状态结束。结果是$borg可以是5或0。
if($days > 0)
$borg = 80;
elseif($days<0 && $days>-7)
$borg = 65;
elseif($days>-7 && $days<-14)
$borg = 50;
elseif($days>-14 && $days<-21)
$borg = 35;
elseif($days>-21 && $days<-28)
$borg = 20;
elseif($days>-28 && $days<-35)
$borg = 5;
else
$borg = 0;
请阅读此处的文档:elseif。