Bonsoir
Je cherche à créer un code PHP qui permet de générer toutes les combinaisons possibles parmi une chaîne de caractères. Par exemple si la chaîne est abc les combinaisons sont aaa bbb ccc aab aac bac bca cac cbc ccb cca et j'en sais surement oublié. Chaque combinaison devra être unique à la fin de la génération donc il ne doit pas y avoir par exemple 2 fois bca. Cela peut se faire de n'importe quelle façon tant qu'à la fin j'ai toutes les combinaisons qui arrivent une par une (pour les placer par exemple dans une base de données à chaque fois que la suivante arrive).
J'ai déjà un code C# qui fonctionne parfaitement
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 public void TacheA(){ string sChaineMD5 = ""; string sChaineSHA256 = ""; string sChaine = ""; maRequeteInsererDonnees = "INSERT INTO `logiciel`.`table` (`fldChaine`) VALUES (@Chaine)"; maCommandeInsererDonnees = new MySqlCommand(maRequeteInsererDonnees, maConnexion); maCommandeInsererDonnees.Parameters.Add(new MySqlParameter("@Chaine", MySqlDbType.String, 30)); foreach (var s in CreateCombinations("abcdefghijklmnopqrstuvwxyz0123456789", 4)){ sChaine = s; try { maCommandeInsererDonnees.Parameters["@Chaine"].Value = sChaine; } catch { }; try{ maCommandeInsererDonnees.Connection.Open(); maCommandeInsererDonnees.ExecuteScalar(); } catch{ } finally{ maCommandeInsererDonnees.Connection.Close(); } } ThreadA.Interrupt(); // Car TacheA est en faite un thread pour éviter que le logiciel se bloque MessageBox.Show("Terminé"); }
Cela permet de mettre dans la base toutes les chaînes de 4 caractères (pas plus pas moins) que l'on peut former avec abcdefghijklmnopqrstuvwxyz0123456789.
Je l'ai d'abord écris en C# car c'est le langage que je maîtrise le mieux.
J'ai ensuite essayé en PHP :
Bien sûr je commence par le stricte minimum mais j'ai déjà un problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 function combinaisons(array $tab, $taille){ foreach ($c as $tab){ if($taille ==1) return $c; else{ foreach ($s as combinaisons($tab, $taille - 1)) return $c + $s; } } }
La ligne 75 étantFatal error: Can't use function return value in write context in C:\UwAmp\www\new.php on line 75
En plus je ne sais même pas si le code PHP peut fonctionner. Le C# a été testé avec succès.
Code : Sélectionner tout - Visualiser dans une fenêtre à part foreach ($s as combinaisons($tab, $taille - 1))
Merci de m'aider
Partager