Vérifier si toutes les valeurs sont différentes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Vérifier si toutes les valeurs sont différentes

par Tictac » 19 janv. 2006, 23:09

de rien ;)

par spirou » 19 janv. 2006, 20:34

Ca fonctionne impec.

Merci Tictac :D

par Tictac » 19 janv. 2006, 19:51

Voilà comment retourner toute le key ou se trouve la valeur en double =>
<?php

// Voici ton array 
$array = array("fleur","petale","tige","tige") ;
//combien de valeur dans l'array ? 
$nb_value = sizeof($array); 
//crée un deuxieme array pour les comparer ensuite 
$array2 = $array ; 
$cle = "";
$position = "";
//Boucle pour passer chaque valeur 
for ($i = 0 ; $i < $nb_value ; $i++) 
        { 
		//enlevons la première clé du $array 
		 $array_s = array_shift($array); 
         if (in_array($array2[$i],$array,true) == TRUE) 
                { 
                 $cle .=  "La clé ".$array2[$i]." existe déjà dans l'array !<br>";
				 $value = $array2[$i];
				 $position = array_keys($array2, $value);  
                } 
		 else{
		 	 }
        } 		
print $cle."<br>";
print_r ($position) ; 

?>
maintenat , tu as un array $position avec toutes les keys où se trouve les valeur en double !

par spirou » 19 janv. 2006, 17:51

Oui ça j'arrivais à le faire, ça me récupère la position de la 1ère valeur du double dans la chaine.

Je me suis peut-être mal expliqué, mais ce que je voudrais, c'est récupérer aussi la position de la 2nde valeur du double dans cette chaine.

Ok pour $array_s, je comprends mieux maintenant :D

par Tictac » 19 janv. 2006, 17:04

tu peux jeter un oeil =>

http://be2.php.net/in_array

tu comprendra p-e mieux !!

$array_s , c'est pas obligatoire , c'est juste pour faire un test si besoin !

par principe , je nomme tjs mes functions ;)

pour recupérer la position dans l'array , c'est simple

tu fais :

if (in_array($array2[$i],$array,true) == TRUE)
{
$cle .= "La clé ".$array2[$i]." existe déjà dans l'array !<br>";
$position = $i;
}
...

print $cle."=> en position ".$position." dans l'array";

par spirou » 19 janv. 2006, 16:32

Merci Tictac, ça fonctionne presque comme je veux.

J'aurais par contre besoin qu'on m'explique le true dans le in_array.
J'ai regardé sur php.net, mais j'ai pas compris à quoi sert exactement ce 3ème paramètre.

J'ai aussi un problème de compréhension sur cette ligne :
$array_s = array_shift($array);
La fonction, c'est bon, j'ai compris à quoi elle sert, pas de problème, mais c'est son application dans ton code que je ne comprends pas, puisque $array_s n'est pas utilisé par la suite.

Ensuite j'arrive à récupérer la position dans la chaine du 1er paramètre en double en récupérant la valeur de $i, mais pour le second paramètre je n'arrive pas à avoir sa position dans cette chaine, comment faudrait-il faire ?

J'ai aussi un problème avec les valeurs dans la chaine égales à 0, mais je m'en occuperais plus tard.

Merci :P

par Tictac » 19 janv. 2006, 09:27

Voici un code mais que je pense etre +- correct mais j'ai pas testé :
// Voici ton array 
$array = array("fleur","petale","tige","tige") ;
//combien de valeur dans l'array ? 
$nb_value = sizeof($array); 

//crée un deuxieme array pour les comparer ensuite 
$array2 = $array ; 
$cle = "";

//Boucle pour passer chaque valeur 
for ($i = 0 ; $i < $nb_value ; $i++) 
        { 
		//enlevons la première clé du $array 
		 $array_s = array_shift($array); 
         if (in_array($array2[$i],$array,true) == TRUE) 
                { 
                 $cle .=  "La clé ".$array2[$i]." existe déjà dans l'array !<br>"; 
                } 
         else{
                //tu fais ce que tu veux ;)
               }
        } 
//dans le cas present , tu vas avoir 
//La clé tige existe déjà dans l'array!		
print $cle ; 
tu as possiblité ensuite d'enlever les doublons grace à cette fonction =>
array_unique();

http://php.belnet.be/manual/fr/function ... unique.php

Vérifier si toutes les valeurs sont différentes

par spirou » 19 janv. 2006, 03:38

Bonsoir, ou plutôt bonne nuit !!

Je souhaiterais pouvoir vérifier de manière simplifiée si toutes les valeurs d'une liste ou d'un array sont bien différentes, et si ce n'était pas le cas que cela me retourne ou m'identifie les valeurs égales.

Je pourrais bien entendu utiliser les conditions, mais si j'ai 15 valeurs à vérifier, il faudrait que je l'utilise 15 fois, une condition pour chaque valeur, plus encore 14 conditions dans chacune des précédentes pour identifier les valeurs égales.

Ca fait beaucoup #-o

Y'a t-il un moyen plus simple de faire ceci et avec quelle fonction ?