如何在php中从索引创建字符串


How to create string from index in php

我必须将一个索引传递给一个函数,然后从该索引返回一个包含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()页面的评论中有几个例子,人们编写的函数确实试图为高基数工作。不过我不能为他们中的任何一个担保。