PHP7遇到非数值

时间:2019-04-19 04:36:54

标签: php

我要转换日期(从格里高利历到伊斯兰回历)。 PHP 7显示“非数字”警告错误。我该如何修改代码?

这是用于运行PHP 7.2和Apache的Linux服务器。它与PHP 5一样工作了!尝试过有关stackoverflow的建议,例如(intval)+(int),无济于事!

1510    $date = "25/1/1999";
1511    $Gdate = explode ('/', $date) ; 
1512    $day = $Gdate[0];
1513    $month = $Gdate[1];
1514    $year = $Gdate[2];
1515
1516    $jgc=0;
1517    $m=$month;
1518    $y=$year;
1519    if($m<3) 
1520    {
1521        $m=$m+12;
1522        $y=$y-1;
1523    }
1524    $c=floor($y/100.);
1525
1526    if($y==1582 && $m>10) {$jgc=10;}
1527    if($y>1582) {$jgc=2-$c+floor($c/4.);}
1528
1529    $jd= floor(365.25*($y+4716))+floor(30.6001*($m+1))+$day+$jgc-1524;

我希望它可以正常工作,并且不会产生以下错误: 警告:process.php中在第 1529

行遇到的非数字值

2 个答案:

答案 0 :(得分:1)

尝试在php 7.2.4上运行此代码没有错误,因此我认为它对您特定的php有所帮助。 在进行计算之前,尝试将变量转换为整数

  $date = "25/1/1999";
    $Gdate = explode ('/', $date) ; 
    $day = (int)$Gdate[0];
    $month = (int)$Gdate[1];
    $year = (int)$Gdate[2];

    $jgc=0;
    $m=$month;
    $y=$year;
    if($m<3) 
    {
        $m=$m+12;
        $y=$y-1;
    }
    $c=floor($y/100.);

    if($y==1582 && $m>10) {$jgc=10;}
    if($y>1582) {$jgc=2-$c+floor($c/4.);}

    $jd= floor(365.25*($y+4716))+floor(30.6001*($m+1))+$day+$jgc-1524;
    echo $jd;

答案 1 :(得分:-1)

问题是,您输入的是非数字值。
然后,我认为您的日期格式不正确。
我建议您使用DateTime()库来正确解析日期。