Php 分析错误:if块中的数值文字无效

Php 分析错误:if块中的数值文字无效,php,Php,我在某些代码方面遇到问题: else if ($IDKood[3] . $IDKood[4] == 08) { $Month = "August"; } else if ($IDKood[3] . $IDKood[4] == 09) { $Month = "September"; } 基本上,如果2个数字等于一个给定的数字,我希望它输出一个月,这将导致所有月份。 在08和09之前,一切都很好,我似乎

我在某些代码方面遇到问题:

else if ($IDKood[3] . $IDKood[4] == 08) {
            $Month = "August";
        }
        else if ($IDKood[3] . $IDKood[4] == 09) {
            $Month = "September";
        }
基本上,如果2个数字等于一个给定的数字,我希望它输出一个月,这将导致所有月份。 在08和09之前,一切都很好,我似乎无法修复它。
据我所知,这与php本身有关,我尝试将数字放在字符串和整数中,但没有效果。

php中的整数文本如果以前导零开头,则以八进制表示。去掉前导零,你就能超过七

发件人:

要使用八进制表示法,请在数字前面加0(零)

此外,您似乎正在将字符串与数字进行比较。如果$IDKood是一个字符数组,那么您可能应该进行字符串比较:

if ($IDKood[3] . $IDKood[4] == '09') {
…尽管正如伊舍格所观察到的,只要你把前导零敲掉,它就会工作得很好:

if ($IDKood[3] . $IDKood[4] == 9) {
话虽如此,如果你只是把一个数字转换成一个月的名字,可能会有


尽管@MattGibson已经给出了正确的答案(嗯,在我看来是正确的),但我只想指出,有一种更好的方法可以实现你想要实现的目标

第一条路:
有一个包含所有月份的数组

$months = [...,'08'=>"August", "09"=>"September",...];
// then 
$Month = $months[$IDKood[3] . $IDKood[4]];
// no need for all the elseifs
为了使其更好,请从
$IDKood[3]中生成一个int$IDKood[4]

$monthIndex = intval($IDKood[3] . $IDKood[4]);
// now you can use the built in dateTime-class to get the string for this month.

08
更改为
8
。或者什么可以
$IDKood[3]$IDKood[4]
结果到?您可以检查此回音$IDKood[3]吗$IDKood[4]如果你在比较数字,那么你会得到什么?不要用
0
来处理数字,否则它会被解释为八进制(八进制中不允许使用8/9)。如果您正在比较字符串,请将
08
放在诸如“08”之类的引号中。您也在使用字符串oprean和“.”。但是您不会比较字符串08而不是“08”,看到这个小剪贴画,代码优化的机会可能会很大。。。考虑一下使用数组……这是XY问题的一个经典例子。因为他使用的是
==
,而不是
===
。编辑,尽管我认为你是认真的,以便能够与前导零进行比较。@ishegg这是真的,但也没有什么坏处,而且我认为这使代码试图匹配的内容更加清晰。
$monthIndex = intval($IDKood[3] . $IDKood[4]);
// now you can use the built in dateTime-class to get the string for this month.