我有以下代码,根据天数的差异计算'borg'的数量。我回答了我的$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;
}
答案 0 :(得分:1)
因为您的上一个else
将始终将$borg
设置为0,除非评估了相应的if
。
解决方案是在所有$borg = 0;
语句之前定义if
,并删除else
语句。
$borg = 0;
if( ... )
{
}
...
答案 1 :(得分:1)
我真的不明白你在计算什么,但我清楚地知道为什么你总是在博格有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;
}
这样,只有在所有语句都为假的情况下才会执行$ borg = 0代码。
答案 2 :(得分:1)
你应该使用elseif。如果计算,则执行每个操作,然后以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。
答案 3 :(得分:1)
您的最后两个条件块是导致此特定问题的原因:
if($days>-28 && $days<-35)
{
$borg = 5;
}
else
{
$borg = 0;
}
第一个适用于$days
大于负28 且小于负35,同时。这是不可能的,因此else
始终适用,$borg
始终为零。所有其他if
语句都没有以任何方式链接到最后两个语句,所以它们总是被评估。你的其他if
中至少有三个有同样的问题:他们设置了一个无法实现的条件。
我认为这就是您要做的事情:$borg
的值会随着$days
变得更负而变小。如果您使用else if
条件,则不必每次都重复和反转之前的条件,并且更容易看到您正在做什么(当您意外翻转时很有用{{1} }和<
):
>