[PHP] - array

- array [PHP] - Programmation

Marsh Posté le 11-02-2002 à 17:39:41    

Salut je voudrais savoir si il est possible en php, dans un tableau array de compter combien de fois une valeur apparait !
 
Par exemple on a ce tableau ci :  
 
$var[0]=3;
$var[1]=2;
$var[2]=2;
$var[3]=3;
$var[4]=1;
$var[5]=3;
$var[6]=1;
$var[7]=3;
$var[8]=2;
 
ou $var = array("3","2","2","3","1","3","1","3","2" );
 
c pareil
 
je voudrais savoir par exemple combien de fois le chiffre 3 se repete dans le tableau ... ici il se repete 4 fois, y a t il une commande appropriee?? Ou dois je pondre un algo....
 
merci pour vos reponses !
 
SquiD

 

[jfdsdjhfuetppo]--Message édité par SquiiiD--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 11-02-2002 à 17:39:41   

Reply

Marsh Posté le 11-02-2002 à 17:42:02    

Je crois qu'il faut le faire (avec un vecteur, c'est easy :)) ... par contre si ca existe deja, alors je prends :D !

Reply

Marsh Posté le 11-02-2002 à 17:43:24    

Avec un vecteur? c'est a dire?
 
Merci

Reply

Marsh Posté le 11-02-2002 à 17:50:17    

Bah si c'est juste des chiffres que tu veux compter :
 
// La tu comptes
for($i=0; $i<sizeOf($var); $i++){
  $countVar[$var[$i]]++;
}
 
// La tu affiches
for($i=0; $i<sizeOf($countVar); $i++){
  echo ("Il y a ".$countVar[$i]." fois ".$i." dans le vecteur." );
}
 
Je ne te fais pas l'affront de mettre le code pour ne pas afficher les k ou il y a zeros element :)
 
Par contre si tu veux compter le nombre d'occurences dans un vecteur de chaines de caracteres, faut que je verifie un truc mais c'est pas beaucoup plus dur !

Reply

Marsh Posté le 11-02-2002 à 17:58:07    

plus simple:
array_count_values
(PHP 4 >= 4.0.0)
 
array_count_values -- Compte le nombre de valeurs dans un tableau
Description
array array_count_values ( array input)
array_count_values() retourne un tableau contenant les valeurs du tableau input comme clés et leurs fréquence comme valeur.  
 
Exemple 1. Exemple avec array_count_values()
 
<?php
  $array = array(1, "bonjour", 1, "monde", "bonjour" );
  array_count_values($array);  
// retourne array(1=>2, "bonjour"=>2, "monde"=>1)
?>
 
 
 
 
Note : array_count_values() a été ajoutée en PHP 4.0.  
 
 
User Contributed Notes
array_count_values
   
 
kwa@www-aius.u-strasbg.fr
09-Mar-2001 07:49  
 
PHP 3 implementation:
 
$count_array = array();  
 
reset($orig_array);
while(list(, $val) = each($orig_array)) ++$count_array[$val];

Reply

Marsh Posté le 11-02-2002 à 17:58:13    

Je vais essayer ton code,  
 
Mais pour etre precis en fait je veux faire ca pour l'elaboration d'un petit moteur de recherche...
 
Je sais utiliser le LIKE '%$var%' dans la requete mais le prob c'es que ca ne marche bien que si on entre qu'un seul mot clef a chercher, si je recherche par exemple le mots  
"php pour debutant" ben la requete SQL va rien trouver, alors se que je fait c'est de faire un explode(); sur ce que le visiteurs a entrer et je compte le nombre de mots.
 
en fait voila le code ca sera plus simple :  
 
 
<?
 include "config.php3";
 //Connection a la DATA-BASE !!
 $mysql_link = mysql_connect($host, $user, $pass);
 mysql_select_db($base) or die( "Connexion impossible à la base de donnée !!! " );
 
 
 
 $mots_recherche = explode(" ",$recherche);
 $nb_mots_recherche = count($mots_recherche);
 
 for($i=0;$i<$nb_mots_recherche;$i++)
  {
  $req = "SELECT * FROM anu_sites WHERE url LIKE '%$mots_recherche[$i]%' or titre LIKE '%$mots_recherche[$i]' or description LIKE '%$mots_recherche[$i]%' or mots_clefs LIKE '%$mots_recherche[$i]%' ORDER BY id";
  $result = mysql_query($req);
   
                 while($resultat = mysql_fetch_array($result))
   {
   $id_site .= " ".$resultat["id"];    
   }
  }
 
 echo "$id_site";  
?>
 
 Et ici on obtient la liste des id parfois 2 fois les meme ou 3 fois les meme ou 4.
 
et je veux afficher la liste des site en commencant par ceux dont le numero se repete le plus,... et sans avoir le bug que le meme site apparait plusieur fois dans la liste,...
 
si c'est pas assez clair dis le ;p je comprendrais..
 
merci d'avance !!!

Reply

Marsh Posté le 11-02-2002 à 18:01:18    

donc dans ton exemple ca se limite a  
 
$var  = array("3","2","2","3","1","3","1","3","2" );  
$var2 = array_count_values($var);
 
et tu recupere le nombre d'occurence de 3 dans $var2[3]

Reply

Marsh Posté le 11-02-2002 à 18:03:31    

Si je lis bien ton code tu es en php3 ... :)

Reply

Marsh Posté le 11-02-2002 à 18:07:01    

heu oui mais ca en fait je v changer parce que j'etais sur free avant qui n'acceptait ke les fichier php3 mais la jai acheter mon nom de domaine donc ca va passer un php4.....
 
merci pour vos reponses les gars v essayer de me debrouiller avec ;)  
 
si ca va pas je reply encore une fois a+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed