我想创建一个函数,它将在每个循环后生成一个3字符串字符串.
字母表中有26个字符,我想生成完全独特的3个字符键(AZ).
输出将是17,576个唯一的3个字符键(AZ) - 不区分大小写.
任何人都可以告诉我如何创建一个更优雅的功能,而无需随机生成密钥和检查重复键?
可能吗
谢谢.
如果我正确地读了你的问题你想要一个函数返回一个"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)