0

我有以下代码根据天数的差异计算“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;
}
4

4 回答 4

1

因为您的 lastelse将始终设置$borg为 0 ,除非其对应if的已评估。

$borg = 0;解决方案是在所有语句之前定义if,并删除该else语句。

 $borg = 0;
 if( ... )
 {
 }
 ...
于 2012-07-16T22:56:33.073 回答
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 代码只会在所有语句都为假的情况下执行。

于 2012-07-16T22:57:28.877 回答
1

你应该使用 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

于 2012-07-16T22:58:21.003 回答
1

您的最后两个条件块是导致此特定问题的原因:

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;
}
于 2012-07-16T22:58:27.300 回答