6

我想将一个数字转换为 5 个字符的字符串。字符串字符为 az、AZ 和 0-9。该代码的每个组合都会增加“1”

我不知道如何解释,所以我给你举个例子。例如

1 = aaaaa
26 = aaaaz
27 = aaaaA
52 = aaaaZ
53 = aaaa0
62 = aaaa9
63 = aaaba
89 = aaabz
90 = aaab0

所以如果我有数字 1035,有没有办法 PHP 可以计算出它的代码?

对不起,我的问题有点含糊。

我想这样做的原因是因为我不想显示我的数据库主键 ID,我想显示这种 base63 格式。

4

2 回答 2

1

我想你可以做这样的事情:

function custom_base_62($n)
{
    if ($n < 1)
        trigger_error('custom_base_62(): This silly system cannot represent zero.', E_USER_ERROR);

    $n -= 1;
    $symbols = array_merge(range('a', 'z'), range('A', 'Z'), range(0, 9));
    $r = '';

    while ($n)
    {
        $r = $symbols[$n % 62] . $r;
        $n = floor($n / 62);
    }

    return str_pad($r, 5, $symbols[0], STR_PAD_LEFT);
}
于 2013-09-27T18:19:05.717 回答
1

这是一个你可以玩的想法,不完全确定我理解你的确切目标..

<?php

function Digit_to_char($s){

  $s1 = str_split($s);
  while(list($k,$v) = each($s1)){
    $s2[] = str_replace(range(0,9), array("a","b","c","d","e","f","g","h","y","z"), $v);
  }

  return implode('',$s2);
}


echo Digit_to_char(12345); // prints bcdef

?>
于 2013-09-27T17:48:41.090 回答