我为带前导零的条形码填充整数所以他们有相同数量的字符,例如:铸造零个填充数字字符串到整数
1 -> 00000001 12 -> 00000012 1044 -> 00001044
00000001
是数字和铸造整数当它是1
。
按照预期全部这个工作是否会整数?
我为带前导零的条形码填充整数所以他们有相同数量的字符,例如:铸造零个填充数字字符串到整数
1 -> 00000001 12 -> 00000012 1044 -> 00001044
00000001
是数字和铸造整数当它是1
。
按照预期全部这个工作是否会整数?
小心,从0开始编号在PHP
>> var_dump(011);
int(9)
但是显式转换字符串为int视为基地8似乎是安全的
>> var_dump((int)'011');
int(11)
你没有说任何你将要存储这些数字的地方,但如果它是一个数据库,这里就是这样我有关数据类型的建议:
条码数字不是(尽管名称)数字。传真号码,社会安全号码等也是如此。您不应将它们存储为数字数据(例如,使用MySQL的INT或DECIMAL)数据类型。取而代之的是使用文本数据类型(如CHAR或VARCHAR)
按照预期所有整数都能正常工作吗?
这取决于你的期望。左填充零将永远不会更改值。不管数字是多少,你都可以在字符串的左边添加任意数量的零,它总是数字的,它总是会转换为相同的整数。
(int)"01" == 1
(int)"0001" == 1
(int)"000000001" == 1
等
除非将它视为字符串,否则PHP会将00000001解释为整数1.如果要将条形码视为字符串,请注意正确投射它们,因为PHP由于type juggling可能会将它们解释为整数。
如果不是字符串,则00000001在基数8 *中被视为整数1 *,因此如果这些0在不同值之前,结果将不如预期。 –
我的意思是沿着'0 +“000001”'行,不会像'0 + 000001'那样被视为基数8。 –
我不明白,你的问题是什么? –
你应该给我们一段代码,你期望的结果是,所以我们可以帮助你解决问题(如果有的话) – Dan