Как избавиться от повторяющихся комбинаций?
Код выполняет преобразование строки в все возможные комбинации верхнего/нижнего регистра.
public function calculatePermutations($text) {
$permutations = array();
$chars = str_split($text);
// Count the number of possible permutations and loop over each group
for ($i = 1; $i < strlen($text) ** 2; $i++) {
// Loop over each letter [a,b,c] for each group and switch its case
for ($j = 0; $j < strlen($text); $j++) {
// isBitSet checks to see if this letter in this group has been checked before
// read more about it here: http://php.net/manual/en/language.operators.bitwise.php
$permutations[$i][] = ($this->isBitSet($i, $j))
? strtoupper($chars[$j])
: $chars[$j];
}
}
foreach ($permutations as $value) {
$array[] = implode("", $value);
}
var_dump($array);
}
public function isBitSet($n, $offset) {
return ($n >> $offset & 1) != 0;
}
Пример выполнения:
На фото видно, что 3 повторяющихся комбинации.
Проблема в том, что если в запросе существуют цифры, то из-за этого и получаются повторные комбинации.