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

时间:2013-08-01 23:52:12

标签: php arrays barcode rounding

我在数组中有一些条形码。 PHP似乎是围绕以前导零开头的条形码。我如何阻止这种情况发生并保持数字原样?我正在使用的代码如下:

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

echo '<pre>';
print_r($array);
echo '</pre>';

以下内容如下所示,您可以看到最后四个以前导零为特征的条形码已被删除并删除了前导零。这些数字总是13位数字,并用零填充。

Array
(
    [0] => 5032227448124
    [1] => 5060028999989
    [2] => 5010121096504
    [3] => 5060028999996
    [4] => 5016254104864
    [5] => 5016402052788
    [6] => 8422248036986
    [7] => 31
    [8] => 1030979
    [9] => 31
    [10] => 1031004
)

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

  1. 明显的,简单的,也可能错误的答案是让它们成为字符串。
  2. 更好的答案是使用printf() / sprintf()填充零:

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

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

答案 2 :(得分:0)

以下是将值转换为填充字符串的简便方法:

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

答案 3 :(得分:0)

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

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