Page 1 sur 1

problème création d'une fonction

Posté : 11 avr. 2009, 19:29
par dogmongo
Bonjour,

je développe actuellement une amélioration sur mon CMS, mon objectif est de développer une audite des pages qui analyse les métas tag et corrige mes erreurs, une de mes fonctions me cause problème, elle à pour but de compter les mots en double dans une chaine et me les afficher avec le nombre de fois qu'ils si trouvent.

Imaginons la chaine suivante
$tableau = "php france, php france, php, france php et ancore php"; 
function comptemotsdouble($tableau) ;

La fonction

function comptemotsdouble($tableau) {
reset($tableau);

foreach($tableau as $url) { //Je récupère les mots de la chaine			

$url = trim($url,","); // je vire les virgules

			if(isset($mot[$url])){ 
			$mot[$url] = $mot[$url] + 1 ;
			}else{
			$mot[$url] = 1 ; 
			}
			
			if($etat[$url] == 0){					
			echo $url ."(". $mot[$url] ."), " ;
			}else{
			$etat[$url] = $etat[$url] + 1 ;
			$etat[$url] = 1 ;
			
			}
		}

}
J’obtiens donc à mon désarroi

Code : Tout sélectionner

php(1), france(1), php(2), france(2), php(3), france(3), php(4), et(1), ancore(1), php(5),
Et j'aurai plutôt souhaiter voir le résultat suivant

Code : Tout sélectionner

france(3), et(1), ancore(1), php(5),
Voir le summum

Code : Tout sélectionner

france(3), php(5)
j'ai plus trop les yeux en face des trous alors un coup de pouce serait le bien venu

merci d'avance :wink:

Posté : 11 avr. 2009, 19:41
par orgerix
Je n'ai pas vraiment compris en détail ton script, mais je vois que tu fais des sorties à l'écran alors que tu est encore dans ta boucle de comptage. Donc, si j'ai bien compris, à chaque passage dans ta boucle, tu aura une sortie.

Ce que tu veux, c'est afficher le résultat, après ta boule. Il faut donc que tu enregistre le resultat, puis que tu l'affiche après la boucle.

Posté : 11 avr. 2009, 20:13
par dogmongo
en faite j'essai de faire une fonction genre array_unique() qui serais adapté à mon besoins et me retournerai les nombres de fois ou un mot apparait en double dans ma chaine.

Posté : 12 avr. 2009, 02:20
par Elie
J'ai fait une fonction que je te colle comme ca c'est fait :)
	// Obtenir la liste des categories pour les meta
		function genererMeta() {
	
			$meta = array();
				
			// Par rapport au meta.txt
			$files = file_get_contents('meta.txt');
			$explode = explode(',', $files);
			foreach($explode as $v) {
				$meta[] = trim($v);
			}
			
			$meta = array_count_values($meta);
			arsort($meta);
			$meta = array_keys($meta);
				
			return strtolower(implode(', ', $meta));
				
	}
	
	print_r(genererMeta());

Posté : 12 avr. 2009, 12:44
par dogmongo
Merci pour ta fonction ELi 8-) , mais j'ai déjà résolu mon problème grace à orgerix , ca remarque ma permit de mieux comprend mon erreur , merci orgerix :wink:

Posté : 12 avr. 2009, 13:53
par Elie
Ma fonction (que j'ai simplifié) permet si tu as plusieurs fois le meme mot de le placer en premier dans la liste car il est considéré comme plus important :)

Posté : 12 avr. 2009, 14:58
par dogmongo
Oui j'ai vus par la fonction arsort() :wink: