PHP abs负数

时间:2014-09-09 21:14:10

标签: php mysql date

我正在尝试与If语句进行日期比较。

告诉我,是的,日期是在今天之前,但它不会给我一个负数而不是日期是在今天之后。

这就是我所拥有的。

$datetime= date('Y-m-d');
$time=strtotime($datetime);
echo "<br><br>Today is " . $datetime;
$datetime1= $row['edate'];
$time1=strtotime($datetime1);
echo "<br>The date to compare is " . $row['date'];
$result3 = mysql_query("SELECT date FROM table where name='" . $row['name']. "'");
$row3 = mysql_fetch_row($result3);
$start = $time;
$end = strtotime($row3[0]);
$between = ceil(abs($end - $start) / 86400);

这将输出TODAY&S; S date和END DATE

的正确值

我们今天说的是2014-09-09,我们的结束日期是2014-09-12

echo "<br>There are<b> ". $between. "</b> days left";

输出:还有3天

现在如果我得到另一个日期说2014-09-06 我得到了相同的输出。

echo "<br>There are<b> ". $between. "</b> days left";

输出:还有3天

我想看看:

还有-3天

我想把这一切都放在if语句中以显示数据库的记录。

if ($between < 0){
DONT SHOW RECORD
}
else {
SHOW RECORD
}

问题是$ between之间永远不会小于0

简单测试

$t = 10;
$o = 12;
$difference = abs($o-$t);
echo "The Difference is ".$difference;

输出:差异为2

$t = 10;
$o = 12;
$difference = abs($t-$o);
echo "The Difference is ".$difference;

输出:差异为2

为什么差异不是-2

2 个答案:

答案 0 :(得分:2)

abs()给出绝对数字,这意味着它永远不会是负数。将abs()更改为intval()或将其转换为int(c-style)

$difference = (int)$t - (int)$o;

作为旁注:您应该转义SQL查询,并且只使用sql查询就可以实现相同的结果。这种简单的解决方案不需要在php端进行日期比较。

答案 1 :(得分:1)

PHP中的ABS()函数取绝对值,这是您输入的任何值的正值。ABS(10-12)=2ABS(12-10)=2。看起来你只想要它们之间的距离,你可以使用

$difference = $t-$o;