【问题标题】:How to create string from index in php如何在php中从索引创建字符串
【发布时间】:2012-08-19 23:18:03
【问题描述】:

我必须将索引传递给函数,并从该索引返回一个包含 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

【问题讨论】:

  • 为什么你需要这样做??
  • 那是什么原因,你想访问字符串的所有排列?也许这会对你有所帮助stackoverflow.com/questions/2617055/…
  • 哇,这太复杂了。我花了一段时间才弄明白你要什么,当我弄出来时,我仍然不知道为什么。你到底想用这个来达到什么目的?
  • 顺便说一句,对于任何试图计算出他所要求的内容的人来说,知道 62 是字符串的长度,而 3844 是 62 的平方会有所帮助。
  • 归根结底,这只是基数 10 和基数 64 之间的基数转换。仍然无法理解您为什么要这样做。您的客户可能认为他很聪明并且想出了一些新的东西,但事实并非如此。疯狂,是的,但不是新事物。

标签: php string function indexing


【解决方案1】:

你的问题有点难理解,不知道是不是你想要的:

$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);

【讨论】:

  • 嘿阿哥,你能告诉我人类怎么会想到这样的答案?我已经花了 4 个小时,但无法靠近!
【解决方案2】:

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

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

在上面链接的base_convert() 页面的 cmets 中有几个示例,其中人们编写了尝试为高基数工作的函数。不过,我不能保证其中任何一个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2016-07-26
    • 1970-01-01
    • 2021-03-14
    • 2019-10-20
    相关资源
    最近更新 更多