如何阻止PHP四舍五入我的条形码数字


How to stop PHP from rounding my barcode numbers

我在一个数组中有一些条形码编号。PHP似乎正在对以前导零开头的条形码进行舍入。我该如何阻止这种情况的发生并保持数字不变?我使用的代码如下:

$array = array(5032227448124,5060028999989,5010121096504,5060028999996,5016254104864,5016402052788,8422248036986,0000003798720,0000003735503,0000003798713);
echo '<pre>';
print_r($array);
echo '</pre>';

这呼应了以下内容,因为您可以看到最后四个以前导零为特征的条形码已经更改并删除了前导零。这些数字总是有13位长,并用零填充。

大堆([0]=>5032227448124[1] =>506002899989[2] =>5010121096504[3] =>506002899996[4] =>5016254104864[5] =>5016402052788[6] =>8422248036986[7] =>31[8] =>1030979[9] =>31[10] =>1031004)

如果它们不是数字(整数、浮点、指数),则需要将它们作为字符串引用。

  1. 显而易见的、简单的、也可能是错误的答案是将它们设为字符串
  2. 更好的答案是使用printf()/sprintf()填充零:

    printf('%013d', 12345); // output: 0000000012345
    
  3. MySQL还有一个方便的LPAD()函数:

    SELECT LPAD(12345, 13, 0) // output 0000000012345
    

这里有一种将值转换为填充字符串的简单方法:

$array = array_map(function ($e){return str_pad($e, 13, "0", STR_PAD_LEFT);}, $array);

最后,我只需要在每个条形码编号周围加上双引号,例如

 $array = array("5032227448124","5060028999989","5010121096504","5060028999996","5016254104864","5016402052788","8422248036986","0000003798720","0000003735503","0000003798713");