PHP : Lister les combinaisons uniques de tags

Discussion dans 'Administration d'un site Web' créé par charlieroot, 24 Septembre 2007.

  1. charlieroot
    charlieroot Nouveau WRInaute
    Inscrit:
    5 Août 2005
    Messages:
    22
    J'aime reçus:
    0
    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 !
     
  2. Tilt
    Tilt WRInaute impliqué
    Inscrit:
    26 Mars 2005
    Messages:
    752
    J'aime reçus:
    0
    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>";
     
  3. charlieroot
    charlieroot Nouveau WRInaute
    Inscrit:
    5 Août 2005
    Messages:
    22
    J'aime reçus:
    0
    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
     
  4. charlieroot
    charlieroot Nouveau WRInaute
    Inscrit:
    5 Août 2005
    Messages:
    22
    J'aime reçus:
    0
    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 !
     
Chargement...
Similar Threads - PHP Lister combinaisons Forum Date
PHP – Mysql Lister des régions, villes, departements Développement d'un site Web ou d'une appli mobile 4 Septembre 2010
php lister les liens de ma page html Développement d'un site Web ou d'une appli mobile 26 Octobre 2008
Probleme PHP basique : lister un tableau ! Développement d'un site Web ou d'une appli mobile 3 Janvier 2007
lister les fichiers d'un dossier en php Développement d'un site Web ou d'une appli mobile 14 Décembre 2006
Script PHP pour lister et killer un process Développement d'un site Web ou d'une appli mobile 29 Juillet 2006
php lister un repertoire mais pas tout les fichier Administration d'un site Web 7 Janvier 2005
Indent en mode PHP ? Développement d'un site Web ou d'une appli mobile 9 Juin 2022
Arborescence de classes PHP et séquentialité. Développement d'un site Web ou d'une appli mobile 16 Mai 2022
Afficher des infos depuis plusieurs page en PHP Développement d'un site Web ou d'une appli mobile 23 Mars 2022
Sites de scripts PHP, jQuery, Ajax, etc. Le café de WebRankInfo 20 Mars 2022
Détecter arrêt user d'un script PHP ? Développement d'un site Web ou d'une appli mobile 28 Décembre 2021
sessions PHP sans cookies ? Développement d'un site Web ou d'une appli mobile 26 Décembre 2021
Afficher la dernière version d'un fichier php ? Développement d'un site Web ou d'une appli mobile 8 Novembre 2021
PHP / CURL : interrogation page tiers ne fonctionne plus Développement d'un site Web ou d'une appli mobile 2 Octobre 2021
Actualiser un script php toutes les 10 secondes Développement d'un site Web ou d'une appli mobile 6 Septembre 2021
PHP : problème de comparaison égalité dans boucle FOR avec incrément décimal de 0.1 Développement d'un site Web ou d'une appli mobile 26 Août 2021
Cache Etag nginx et PHP ? Administration d'un site Web 7 Août 2021
Fichier avec ou sans extension php pour le référencement Crawl et indexation Google, sitemaps 3 Août 2021
mon code ne fonctionne pas pour masquer les .php URL Rewriting et .htaccess 31 Juillet 2021
Malware S.Susp.PHP.gen... Administration d'un site Web 15 Juillet 2021