遇到PHP7非数值

标签 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;

我希望它能正常工作,不会产生以下错误: 警告:在 1529

行的 process.php 中遇到非数字值

最佳答案

在 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;

关于遇到PHP7非数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55756674/

相关文章:

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - 设置 PDO::ATTR_EMULATE_PREPARES false 时联合查询中的日期字段问题

javascript - PHP 只获取循环的最后一个值

javascript - 使用ajax在按钮单击上调用php函数并通过参数进行解析

php - 向表中插入表单数据

php - 如何在 PHP 中进行 wiki/wordpress 风格比较/差异?

php - 投注申请,获得获胜球队的赔率

PhpStorm 的 PHP7 语言支持

php - 登录成功/登录失败后重定向

php - 使用php从/usr/bin/mail读取邮件