problème création d'une fonction

Mammouth du PHP | 804 Messages

11 avr. 2009, 19:29

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:

Mammouth du PHP | 693 Messages

11 avr. 2009, 19:41

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.

Mammouth du PHP | 804 Messages

11 avr. 2009, 20:13

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.

Mammouth du PHP | 1339 Messages

12 avr. 2009, 02:20

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());
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Mammouth du PHP | 804 Messages

12 avr. 2009, 12:44

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:

Mammouth du PHP | 1339 Messages

12 avr. 2009, 13:53

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 :)
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Mammouth du PHP | 804 Messages

12 avr. 2009, 14:58

Oui j'ai vus par la fonction arsort() :wink: