0

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

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

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

这与以下内容相呼应,您可以看到以前导零为特征的最后四个条形码已更改并已删除其前导零。这些数字的长度始终为 13 位,并用零填充。

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

4 回答 4

2

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

于 2013-08-01T23:53:54.410 回答
0
  1. 显而易见、简单且可能错误的答案是让它们成为字符串。
  2. 更好的答案是使用printf()/sprintf()填充零:

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

    SELECT LPAD(12345, 13, 0) // output 0000000012345
    
于 2013-08-02T00:00:48.847 回答
0

这是将值转换为填充字符串的简单方法:

$array = array_map(function ($e){return str_pad($e, 13, "0", STR_PAD_LEFT);}, $array);
于 2013-08-02T08:07:26.107 回答
0

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

 $array = array("5032227448124","5060028999989","5010121096504","5060028999996","5016254104864","5016402052788","8422248036986","0000003798720","0000003735503","0000003798713");
于 2013-08-02T19:10:37.780 回答