[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 メーリングリストの案内