2014-01-07 49 views
-1

我得到了这个脚本来缩小哪个页码的发布ID似乎大部分工作,但当我输入0013作为它应该说它的pageNum = 311的数字它总是回来与261。PHP如果语句没有返回正确的页码

我做错了什么?

这里是脚本:

$releaseNumber = sprintf('%04d', 0013); 

if($releaseNumber < 6300 && $releaseNumber > 6000) { 
    $pageNum = 1; 
}elseif($releaseNumber < 6001 && $releaseNumber > 5800) { 
    $pageNum = 16; 
}elseif($releaseNumber < 5801 && $releaseNumber > 5600) { 
    $pageNum = 26; 
}elseif($releaseNumber < 5601 && $releaseNumber > 5200) { 
    $pageNum = 36; 
}elseif($releaseNumber < 5201 && $releaseNumber > 5000) { 
    $pageNum = 56; 
}elseif($releaseNumber < 5001 && $releaseNumber > 4700) { 
    $pageNum = 66; 
}elseif($releaseNumber < 4701 && $releaseNumber > 4300) { 
    $pageNum = 81; 
}elseif($releaseNumber < 4301 && $releaseNumber > 3900) { 
    $pageNum = 101; 
}elseif($releaseNumber < 3901 && $releaseNumber > 3500) { 
    $pageNum = 121; 
}elseif($releaseNumber < 3501 && $releaseNumber > 3100) { 
    $pageNum = 141; 
}elseif($releaseNumber < 3101 && $releaseNumber > 2700) { 
    $pageNum = 161; 
}elseif($releaseNumber < 2701 && $releaseNumber > 2300) { 
    $pageNum = 181; 
}elseif($releaseNumber < 2301 && $releaseNumber > 1900) { 
    $pageNum = 201; 
}elseif($releaseNumber < 1901 && $releaseNumber > 1500) { 
    $pageNum = 221; 
}elseif($releaseNumber < 1501 && $releaseNumber > 1100) { 
    $pageNum = 241; 
}elseif($releaseNumber < 1101 && $releaseNumber > 0900) { 
    $pageNum = 261; 
}elseif($releaseNumber < 0901 && $releaseNumber > 0700) { 
    $pageNum = 271; 
}elseif($releaseNumber < 0701 && $releaseNumber > 0500) { 
    $pageNum = 281; 
}elseif($releaseNumber < 0501 && $releaseNumber > 0301) { 
    $pageNum = 291; 
}elseif($releaseNumber < 0301 && $releaseNumber > 0100) { 
    $pageNum = 301; 
}elseif($releaseNumber < 0101 && $releaseNumber > 0000) { 
    $pageNum = 311; 
} 
+3

整数不使用前缀零,并且如果尝试使用前缀零,则会将其转换为八进制值。 '$ releaseNumber <101 && $ releaseNumber> 0'或'$ releaseNumber <'0101'&& $ releaseNumber>'0000'' – MonkeyZeus

+0

此外,为了帮助您的代码更好看/更易于阅读,您不需要检查你的elseif语句中是否存在'$ releaseNumber number',它会落入上面的if/elseif语句中。 – elitechief21

+0

@Almado我的脚本工作只是不知道八卦,不知道我需要如何调试?而我只为自己编码,所以为什么我需要学习数组或开关盒,如果它工作得很开心。 – Exoon

回答

1

开始有0的数目被解释为基座8号,或八进制符号。

参见octal notations

要使用八进制符号,前面加上0(零)的数目。要使用十六进制符号,请在数字前面加上0x。

+0

谢谢,没有意识到。它的工作现在。 – Exoon

+0

正如其他人提到的那样,您可能可以通过创建一个将版本号映射到页码的数组来改进代码。 –

+0

它会如何改善它?数组会使它运行更快吗?它目前的工作是诚实的。 – Exoon

1

当您将0放在前面时,PHP将数字读取为八进制数(不是Ocelet!)。 0013将变成11,所以它肯定会在第261页

+0

Ocelet(注意开头的大O)是北半球非常罕见而害羞的动物。 – hakre

+0

谢谢!我必须有一个坐在后院的Ocelet .. –

+0

Pssst:Ocelet也不存在,它是Ocelot:D而且这真的很可爱。 – hakre