[PHP-users 26972] Re: 英数字での連番の付け方
milk_coffee_2004jp@yahoo.co.jp
milk_coffee_2004jp @ yahoo.co.jp
2005年 9月 25日 (日) 20:27:26 JST
Konといいます。
皆様ありがとうございます。
36進数ですか…全く考え付きませんでした。
> <?php
> $from = base_convert("AZZZY", 36, 10);
> for ($i = $from; $i < $from + 4; $i++) {
> echo base_convert($i, 10, 36) . "\n";
> }
> ?>
> foreach ($i = 0; $i < 1000; ++$i) {
> $num = str_pad(strtoupper(base_convert($i, 10, 36)), 5, '0', STR_PAD_LEFT);
> echo "$num\n";
> }
なるほど…この関数を使った事も見た事もなかったので
とても参考になりました。後は現在のシステムにどう
組み合わせていくかですね。。。
> 99999 の次は A0000 と言うことですが、
> 左一桁目は 9 → A なのに(つまり36進数)
> 右側が 9 の次 A とならず 0 となり繰り上がるのは(つまり十進数)なぜでしょ
> う?
9からAに行くのは、左側の値からと難しく考えてました。
ですので、Z が指定される順序として、
Z**** ZZ*** ZZZ** ZZZZ* ZZZZZ みたいな感じです。
# う〜ん、、うまく説明出来なくてごめんなさい...
でもこの法則には特にこだわりはなく、単に、五桁の数字だと
99999 しかないので、桁数が足りなくなる可能性が大なので、
英字も混ぜれば実質問題のないユニーク数を確保出来るのでは
と思ったのです。
# 100万通りぐらいあればまず問題ないですから…。
大変解りやすいサンプルコードをお二人から頂きましたので、
後は自分なりに解決したいと思います。
Setoさん、高木さん、小山さん、natuさん、ありがとうございました。
__________________________________
For All Sports Fans!
http://pr.mail.yahoo.co.jp/yells/
PHP-users メーリングリストの案内