2011-08-12 55 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。 –