我必须将索引传递给函数,并从该索引返回一个包含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
答案 0 :(得分: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);
答案 1 :(得分:0)
你所要求的基本上是一个基数转换器,从基数10(十进制)数字到基数64(在计数系统中使用你的字符串作为64位数字)。
PHP确实提供了内置的base_convert()
function,但是虽然它适用于在十六进制和十进制之间进行转换,但它不适合像这样的非常高的基数。这部分是因为没有人通常对它们有任何需要,部分原因是这种基数的数字不是商定的标准。
上面链接的base_convert()
页面的评论中有几个示例,其中人们编写的函数试图为高基础工作。我不能保证他们中的任何一个。