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
相关产品推荐
相关产品推荐

