2011-08-12 76 views
0

我爲帶前導零的條形碼填充整數所以他們有相同數量的字符,例如:鑄造零個填充數字字符串到整數

 
1 -> 00000001 
12 -> 00000012 
1044 -> 00001044 

00000001是數字和鑄造整數當它是1

按照預期全部這個工作是否會整數?

+2

我不明白,你的問題是什麼? –

+1

你應該給我們一段代碼,你期望的結果是,所以我們可以幫助你解決問題(如果有的話) – Dan

回答

5

小心,從0開始編號在PHP

>> var_dump(011); 
int(9) 

但是顯式轉換字符串爲int視爲基地8似乎是安全的

>> var_dump((int)'011'); 
int(11) 

你沒有說任何你將要存儲這些數字的地方,但如果它是一個數據庫,這裏就是這樣我有關數據類型的建議:

條碼數字不是(儘管名稱)數字。傳真號碼,社會安全號碼等也是如此。您不應將它們存儲爲數字數據(例如,使用MySQL的INT或DECIMAL)數據類型。取而代之的是使用文本數據類型(如CHAR或VARCHAR)

0

按照預期所有整數都能正常工作嗎?

這取決於你的期望。左填充零將永遠不會更改值。不管數字是多少,你都可以在字符串的左邊添加任意數量的零,它總是數字的,它總是會轉換爲相同的整數。

(int)"01" == 1 
(int)"0001" == 1 
(int)"000000001" == 1 

+0

http://php.net/manual/en/language.types.integer。 php –

+0

0000000009 == 0 – Mchl

+0

@Mchl我認爲這是非常清楚的問題是關於零填充字符串,因爲他提到'is_numeric'和'(int)「0000000009」== 9「,但我更新了我的答案澄清。 – meagar

0

除非將它視爲字符串,否則PHP會將00000001解釋爲整數1.如果要將條形碼視爲字符串,請注意正確投射它們,因爲PHP由於type juggling可能會將它們解釋爲整數。

+0

如果不是字符串,則00000001在基數8 *中被視爲整數1 *,因此如果這些0在不同值之前,結果將不如預期。 –

+1

我的意思是沿着'0 +「000001」'行,不會像'0 + 000001'那樣被視爲基數8。 –