我正在创建一个函数,该函数将使用字符集返回给定字符串长度内的每个可能的字符串。
例如,字符集“abc”和长度 2 应允许 9 (3 ^ 2) 个唯一组合:
aa, ab, 交流电, 巴, BB, 公元前, 加州, CB, 抄送
(手动构建的列表)
可以使用什么方法来创建这样的函数?
最佳答案
一如既往,有多种方法可以解决您所要求的问题,这只是一种方法,即在输出字符串中的每个字符使用一个计数器:
$c = "abc"; // charset
$l = 2; // string length
for($t='',$cl=strlen($c),$s=array_fill(0,$l,0),$i=pow($cl,$l);$a=0,$i--;) {
for($t&&$t.=', ';$a<$l;$t.=$c[$s[$a++]]);
for(;$a--&&++$s[$a]==$cl;$s[$a]=0);
};
echo $t; // the string you asked for.
aa、ab、ac、ba、bb、bc、ca、cb、cc
一个主循环、一个构建字符串的循环和一个用于计数的循环。
我可以想象这也应该适用于获取输出字符串的每个位置的模数。
关于php - 基于字符集的固定长度的所有字符串组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7863781/