我必须将一个索引传递给一个函数,然后从该索引返回一个包含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
您的问题有点难以理解,不确定这是否是您想要的:
$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);
您想要的基本上是一个以数字为基础的转换器,从10(十进制)数字到64(在计数系统中使用字符串作为64位数字)。
PHP确实提供了一个内置的base_convert()
函数,但是,虽然它可以很好地在十六进制和十进制之间进行转换,但它不适用于像这样的高基数。这部分是因为通常没有人需要它们,部分是因为这样一个基数的数字不是一个商定的标准。
在上面链接的base_convert()
页面的评论中有几个例子,人们编写的函数确实试图为高基数工作。不过我不能为他们中的任何一个担保。