-3

我必须将一个索引传递给一个函数,并从该索引返回一个包含 1 到 4 个字符的字符串。

我有:

$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

所以如果我说 index(20) 函数应该返回较低的“k”,因为它是它在 $string 变量中的索引。

但...

如果我输入索引

62 it should return 10
63 .. 11

那是因为从索引 62 开始,它应该从 1 而不是 0 开始字符串,并循环到下一个索引,所以它们将是 2 长度的字符串

如果我输入索引

3843 .. ZZ

这是因为从索引 3843 开始,来自 [0-9a-zA-Z][0-9a-zA-Z] 的所有可能性都已结束,现在字符串以 3 长度开始。

3844 .. 100

...

9999 .. 2Bh

所有的可能性和 [0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z] 但我只需要直到索引 9999

4

2 回答 2

2

您的问题有点难以理解,不确定这是否是您想要的:

$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 

function t($n)
{
    global $string;
    $ret = $string{$n%62};
    if($n>=62)
        $ret = t(floor($n/62)).$ret;
    return $ret;
}

echo t(9999);
于 2012-08-24T11:48:43.047 回答
0

你所要求的基本上是一个数字基转换器,从基数 10(十进制)数字到基数 64(使用你的字符串作为计数系统中的 64 位数字)。

PHP 确实提供了一个内置base_convert()函数,但是虽然它可以很好地在十六进制和十进制之间进行转换,但它不适用于像这样的非常高的基数。这部分是因为通常没有人需要它们,部分是因为这种基数的数字不是公认的标准。

在上面链接的页面的评论中有几个例子base_convert(),人们编写的函数确实试图为高基数工作。我不能保证他们中的任何一个。

于 2012-08-24T12:10:45.323 回答