Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPCeil返回一个浮点值_Php_Ceil - Fatal编程技术网

PHPCeil返回一个浮点值

PHPCeil返回一个浮点值,php,ceil,Php,Ceil,我创建了一个函数来返回两个日期之间的差值 <?php class days { function dateDiff($start, $end) { $start_ts = strtotime($start); $end_ts = strtotime($end); $diff = $end_ts - $start_ts; $diff1 = ceil($diff / 86400); return

我创建了一个函数来返回两个日期之间的差值

<?php


class days {
    function dateDiff($start, $end) {
        $start_ts = strtotime($start);

        $end_ts = strtotime($end);

        $diff = $end_ts - $start_ts;

        $diff1 = ceil($diff / 86400);

        return $diff1;

    }
}

当返回天数时,
ceil
函数工作正常

但问题在于:

if ($days<365){
   $ds=$days/30;
   $tm='months';
}

ceil返回一个int,然后在这里再次将其转换为float
$ds=$days/30
您还应该记住,如果执行任何变量类型检查,ceil()、floor()和round()确实返回float,它们只是四舍五入到最接近的整数;)谢谢大家,我现在知道问题出在哪里了,谢谢你们,伊莎莉亚,谢谢你们,克里斯:-)+1你们的逻辑有缺陷。假设每个月有30天,每年有365天。你可能想看看。如果您运行的是php>5.3,您可能想签出当然是dateInterval,您是对的,但这只是一个初始代码,我应该在代码中做一些其他更新。。。更新之一是将ifs集成到函数中,并为当时的小型显示器返回html代码。谢谢你,非常感谢。。。我有多蠢。。。我以前没有观察过这个问题:-)
if ($days<365){
   $ds=$days/30;
   $tm='months';
}
$days = $a->dateDiff('10 oct 2011',date('Y/m/d'));

if ($days < 30) {
    $ds = $days;
    $tm = 'day';
}
else {
    if ($days < 365){
        $ds = round($days / 30);
        $tm = 'month';
    }
    else {
        $ds = round($days / 365);
        $tm = 'year';
    }
}

if ($ds > 1) {
    $tm .= 's';
}

echo "$ds $tm"; # => 1 month; or 2 months using ceil function