これは完全なアルゴリズムではありません。小さい ID 番号がわずかに優先されるからです。いわば、ユーザー ID がかなり均等に分散されていることを前提としています。そうでない場合、配布がうまくいかない可能性があります。
あなたのアルファベットが何であるかを把握し、次のような文字列に入れます。$str = '0123456789abcdefghijklmnopqrstuvwxxyzABCDEFGHIJKLMNOPQRSTUVXYZ';
この文字列にはn文字があります。ここで、ユーザー ID を基数nの整数として扱います。
文字ごとに、文字列内のインデックスを見つけます (0 ベース)。このインデックスを n xで乗算します。ここで、x は元の文字列の文字位置で、0 から始まります。これらをすべて足し合わせて、和のモジュロをとります。
おそらく、これを数文字だけ行いたいと思うでしょう。数文字を読み取ると、合計が非常に大きくなり、大きな整数演算に適した関数を使用しない限り、PHP はそれを適切に処理できません (確かにGMPなどを使用しますが、あなたのケースには理想的ではないかもしれません)。ネイティブ整数を使用している場合は、可能な最大合計が 2^31 (n x +n x+1 +...+n) を超える前に停止します。
最初から開始することも、逆方向に進むこともできます (逆方向は通常の整数表記に対応します)。ID 生成の仕組みによっては、そのうちの 1 つが適している場合があります。