无法在PHP 5.3.28中重新声明date_diff()

时间:2014-02-13 06:12:48

标签: php

我已经读过这个函数应该在5.3但不是5.2中工作,所以我不确定为什么我从PHP得到致命的错误。可悲的是,我无论如何都不是编码员,希望能得到一些指导。谢谢!

function date_diff($start, $end="NOW")
{
    $sdate = strtotime($start);
    $edate = strtotime($end);

    $time = $edate - $sdate;
    if($time>=86400) {
        // Days + Hours + Minutes
        $pday = ($edate - $sdate) / 86400;
        $preday = explode('.',$pday);

        $phour = $pday-$preday[0];
        $prehour = explode('.',$phour*24);

        $premin = ($phour*24)-$prehour[0];
        $min = explode('.',$premin*60);

        $presec = '0.'.$min[1];
        $sec = $presec*60;

        $timeshift = $preday[0];
    }else{
            $timeshift = 0;
    }
    return $timeshift;
}

1 个答案:

答案 0 :(得分:2)

无法重新声明XXXX()只是意味着您正在尝试声明已经存在的某些东西。

已定义date_diff函数,因此请在再次定义之前检查它是否已定义。您可以使用function_exists()

执行此操作
if (!function_exists("date_diff"))
{
  function date_diff($start, $end="NOW")
  {
                $sdate = strtotime($start);
                $edate = strtotime($end);

                $time = $edate - $sdate;
                if($time>=86400) {
                                // Days + Hours + Minutes
                                $pday = ($edate - $sdate) / 86400;
                                $preday = explode('.',$pday);

                                $phour = $pday-$preday[0];
                                $prehour = explode('.',$phour*24);

                                $premin = ($phour*24)-$prehour[0];
                                $min = explode('.',$premin*60);

                                $presec = '0.'.$min[1];
                                $sec = $presec*60;

                                $timeshift = $preday[0];

                }else{
                        $timeshift = 0;
                }
                return $timeshift;
  }
}

只是为了澄清,你只需要定义这样的函数你希望你的代码能够在早于5.3的php较新的 AND 版本上工作如果你只使用5.3+那么你就不要需要声明这个函数,因为它已经存在,你只需使用date_diff()而无需定义它