2014-01-07 76 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