| |
|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
gueudz Nouveau WRInaute
Inscrit le: 05 Aoû 2005 Messages: 22
|
Posté le : Lun Sep 24, 2007 17:26 Sujet du message: PHP : Lister les combinaisons uniques de tags |
|
|
Bonjour,
J'aimerais pouvoir lister les combinaisons uniques d'un tableau de tags, exemple :
$tags = array("orange","citron","banane","pomme");
Nous donnerait :
(profondeur 1)
orange
citron
banane
pomme
(profondeur 2)
orange citron
orange banane
orange pomme
citron banane
citron pomme
banane pomme
(profondeur 3)
orange citron banane
orange citron pomme
orange banane pomme
citron banane pomme
(profondeur 4)
orange citron banane pomme
-----------------------------------
En fait cela équivaut à une imbriquation de for (4 dans cet exemple) comme suit :
| Code: |
for($i=1;$i<=$profondeur;$i++) {
for($j=$i+1;$j<=$profondeur;$j++) {
for($k=$j+1;$k<=$profondeur;$k++) {
for($l=$k+1;$l<=$profondeur;$l++) {
}
}
}
}
|
J'ai pensé à la récursivité, mais je n'arrive pas à l'appliquer dans ce cas là, alors si quelqu'un pouvait me donner un petit coup de pouce, ce serait sympa.
Merci par avance ! |
|
| |
|
 |
Tilt WRInaute passionné

Inscrit le: 26 Mar 2005 Messages: 758
|
Posté le : Lun Sep 24, 2007 20:51 Sujet du message: PHP : Lister les combinaisons uniques de tags |
|
|
Bonjour,
Voilà ma solution ad hoc:
| Code: |
$tags=array("orange","citron","banane","pomme");
$tags[]="";$r=array();$z=0;while($z<300){mt_srand();shuffle($tags);$o=join("%spl%",$tags);$o=explode("%spl%",$o,mt_rand(1,count($tags)));array_pop($o);sort($o);$o=join(" ",$o);if(!preg_match("`^\s*$`",$o)){$o=preg_replace("`\s+`"," ",trim($o));if(!in_array($o,$r)){$r[]=$o;$z=0;}else{$z++;}}}
echo"<pre>";print_r($r);echo"</pre>"; |
|
|
| |
|
 |
gueudz Nouveau WRInaute
Inscrit le: 05 Aoû 2005 Messages: 22
|
Posté le : Lun Sep 24, 2007 21:10 Sujet du message: PHP : Lister les combinaisons uniques de tags |
|
|
Ca marche !
Mais peux tu m'expliquer un peu le principe de ton code ?
N'y a t-il pas un moyen plus simple ?
En tout cas merci |
|
| |
|
 |
gueudz Nouveau WRInaute
Inscrit le: 05 Aoû 2005 Messages: 22
|
Posté le : Lun Sep 24, 2007 21:55 Sujet du message: PHP : Lister les combinaisons uniques de tags |
|
|
Après un peu de jugeote, j'ai trouvé la solution :
| Code: |
$t = array("orange","citron","banane","pomme");
$n = count($t);
$ct = array(); // Tableau qui va contenir les rcombinaisons de tags
function listeCombi($debut,$tags,$profondeur) {
global $ct;
if($profondeur == 0) {
array_push($ct,$debut);
return;
}
$n = count($tags);
for($i=0;$i<$n;$i++) {
listeCombi($debut.$tags[$i].",",array_slice($tags,$i+1),$profondeur-1);
}
}
for($i=1;$i<=$n;$i++) {
listeCombi(",",$t,$i);
}
echo "<pre>";
print_r($ct);
echo"</pre>";
|
A bientot ! |
|
| |
|
 |
| |
|
|
|
|
Autres sujets de discussion :
|
|