You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP星座查询代码报Invalid numeric literal错误如何解决

问题原因

你的报错由带前导零的数字字面量非法解析导致。
编程语言中默认将以0开头的数字识别为八进制数,而八进制数仅支持0-7的取值:

  • 你未注释的代码行里用到的01、02、03直到07都在八进制合法取值范围内,所以不会报错
  • 注释掉的三行里出现了08、09,这两个值不符合八进制语法规则,直接触发「Invalid numeric literal」报错
修复方案

把mktime参数里所有带前导零的数字的前导零删掉即可,无需修改其他逻辑:

$horoscope = [
          [mktime(0,0,1,3,21),mktime(23,59,59,4,20),'Horoscope for Aries'],
          [mktime(0,0,1,4,21),mktime(23,59,59,5,20),'Horoscope for Taurus'],
          [mktime(0,0,1,5,21),mktime(23,59,59,6,20),'Horoscope for Gemini'],
          [mktime(0,0,1,6,21),mktime(23,59,59,7,20),'Horoscope for Cancer'],
          [mktime(0,0,1,7,21),mktime(23,59,59,8,20),'Horoscope for Leo'],
          [mktime(0,0,1,8,21),mktime(23,59,59,9,20),'Horoscope for Virgo'],
          [mktime(0,0,1,9,21),mktime(23,59,59,10,20),'Horoscope for Libra'],
          [mktime(0,0,1,10,21),mktime(23,59,59,11,20),'Horoscope for Scorpio'],
          [mktime(0,0,1,11,21),mktime(23,59,59,12,20),'Horoscope for Sagittarius'],
          [mktime(0,0,1,12,21),mktime(23,59,59,1,20),'Horoscope for Capricorn'],
          [mktime(0,0,1,1,21),mktime(23,59,59,2,20),'Horoscope for Aquarius'],
          [mktime(0,0,1,2,21),mktime(23,59,59,3,20),'Horoscope for Pisces']
];

如果需要保留两位数字的格式对齐,也可以把月份参数改为字符串类型传入,mktime会自动完成类型转换,不会触发语法错误。

内容的提问来源于stack exchange,提问作者Max Shkel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:24:01