Formation par Olivier Duffez

Formation au référencement par Olivier Duffez, créateur de WebRankInfo !
Une formule efficace alliant théorie et pratique, avec une haute disponibilité des intervenants
Cette formule a déjà convaincu plusieurs centaines d'entreprises, pourquoi pas vous ?
Réservez vite votre place en ligne (convention possible pour imputer sur le budget formation)

Formation référencement Marseille

PHP : Lister les combinaisons uniques de tags

Poster un nouveau sujet Imprimer cette discussion    Forum -> Administration d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
gueudz
Nouveau WRInaute

Inscrit le: 05 Aoû 2005
Messages: 22

URL permanente de ce messagePosté 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 !
 
gueudz
Tilt
WRInaute passionné
WRInaute passionné

Inscrit le: 26 Mar 2005
Messages: 758

URL permanente de ce messagePosté 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>";
 
Tilt Visiter le site web du posteur
gueudz
Nouveau WRInaute

Inscrit le: 05 Aoû 2005
Messages: 22

URL permanente de ce messagePosté 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
gueudz
Nouveau WRInaute

Inscrit le: 05 Aoû 2005
Messages: 22

URL permanente de ce messagePosté 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 !
 
gueudz
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Administration d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort