函数生成26(AZ)*26(AZ)*26(AZ)

coc*_*a09 1 php math function

我想创建一个函数,它将在每个循环后生成一个3字符串字符串.

字母表中有26个字符,我想生成完全独特的3个字符键(AZ).

输出将是17,576个唯一的3个字符键(AZ) - 不区分大小写.

任何人都可以告诉我如何创建一个更优雅的功能,而无需随机生成密钥和检查重复键?

可能吗

谢谢.

Mat*_*ell 9

如果我正确地读了你的问题你想要一个函数返回一个"ABC"形式的键,其中每个字母是随机选择的,但相同的字母组合永远不会发出两次.

你是说每次执行代码从未发出两次或从未发出两次"永远"?

无论哪种方式,我都会考虑生成所有可能的组合,将它们混合,然后根据您的需要将它们存储在成员数组或文件/数据库中.您还需要存储一个索引,每次发出密钥时都会增加该索引.

<?php
  private $keys = array();
  private $keyIndex = -1;

  function generateKeys()
  {
      $this->keys = array();
      $this->keyIndex = -1;

      for ($i=1; $i<=26; $i++)
      {
         for ($j=1; $j<=26; $j++)
         {
            for ($k=1; $k<=26; $k++)
            {
                $this->keys[] = sprintf('%c%c%c', 64+$i, 64+$j, 64+$k);
            }
         }
      }

      shuffle($this->keys);

      return $this->keys;
  }

  function getKey()
  {
      $this->keyIndex++;
      return $this->keys[$this->keyIndex];
  }

?>
Run Code Online (Sandbox Code Playgroud)