0

mysqlデータベースに保存する各アイテムの自動化されたカスタムIDを作成するのに少し助けが必要です。たとえば、ペペ ジーンズの色が「黒」でウエストが 30 のアイテムを 1 つ入力するとします。この商品の一意の ID は、PEPE+BLACK+30+A001 になります。A001 は、A001、A002、A003 のように増加する一意の番号です... .A999 A999 に達した後、この番号は B001 になり、次に B002、B003....というようになります。これを行うロジックを教えてください。

1 つのアイテム ID の例: PEPEBLACK30A009

#ありがとう :)

4

2 に答える 2

1

あなたはそのようなものを持つことができます:

$lastId = 'A999';
$letter = $lastId[0];
echo $letter;
$number = $lastId[1].$lastId[2].$lastId[3];
echo $number;

if ($number < 999) {
    $newId = $letter.sprintf("%03d", $number+1);
} else {
    $ascii = ord($letter);
    $newLetter = chr($ascii+1);
    $newId = $newLetter.'001';
}

echo $newId;

文字 Z の後に他の記号が出力されるため、微調整が必​​要になる場合があることに注意してください。

于 2015-02-21T09:21:15.973 に答える
0

自動インクリメント (0 ~ 28971) のプライマリ ID 列を作成すると、この ID 番号を使用して形式に変換できます。

変換されたいくつかの ID の例:

<?php

for ($i = 0; $i < 5000; $i += 99) {
    $num     = $i;
    $letters = range('A', 'Z');
    $letter  = (int) $num / 999;
    $num     = $num % 999 + 1;
    $num     = str_pad($num, 3, 0, STR_PAD_LEFT);
    echo $i . ' => ' . $letters[$letter] . $num . "\n";
}

出力:

0 => A001
99 => A100
198 => A199
297 => A298
396 => A397
495 => A496
594 => A595
693 => A694
792 => A793
891 => A892
990 => A991
1089 => B091
1188 => B190
1287 => B289
1386 => B388
1485 => B487
1584 => B586
1683 => B685
1782 => B784
1881 => B883
1980 => B982
2079 => C082
2178 => C181
2277 => C280
2376 => C379
2475 => C478
2574 => C577
2673 => C676
2772 => C775
2871 => C874
2970 => C973

休み

もちろん、問題は主キーの 28971 の制限です。これは、26 文字 (26 * 999) しかないためですが、もちろん、4 つ以上の数字を使用したり、将来さらに文字を追加したりできます。

于 2015-02-21T09:14:32.593 に答える