我正在转换日期(公历到伊斯兰回历)。 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/