0

配列にいくつかのバーコード番号があります。PHP は、先行ゼロで始まるバーコードを丸めているようです。どうすればこれを止めて、数値を元のままに保つことができますか? 私が使用しているコードは以下のとおりです。

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

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

これは、先行ゼロを特徴とする最後の 4 つのバーコードが変更され、先行ゼロが削除されていることがわかるように、次のようにエコーします。これらの数値は常に 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

値をパディングされた文字列に変換する簡単な方法を次に示します。

$array = array_map(function ($e){return str_pad($e, 13, "0", STR_PAD_LEFT);}, $array);
于 2013-08-02T08:07:26.107 に答える
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("5032227448124","5060028999989","5010121096504","5060028999996","5016254104864","5016402052788","8422248036986","0000003798720","0000003735503","0000003798713");
于 2013-08-02T19:10:37.780 に答える