begin process at 2012 05 28 08:50:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Comparaison de tableau (array)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comparaison de tableau (array)

lundi 16 février 2009 à 08:44:27 | Comparaison de tableau (array)

utilisateurbox

Bonjour,

Je cherche une fonction PHP qui puisse me dire dans un tableau ne contenant que des valeurs numériques celles qui sont manquante et me le sortir dans un autre tableau.

Déjà j'aimerais savoir si ça existe ou si je vais devoir me faire la fonction "a la main".

Merki a ceux qui oseront me répondre : )
lundi 16 février 2009 à 09:03:03 | Re : Comparaison de tableau (array)

utilisateurbox

Ha ! j'oubliais.

Je ne veux que les valeurs manquantes dans un intervalle spécifique.

Exemple : tableau( 3, 5, 8) la fonction doit me retourner : tableau( 4, 6, 7).

Voila j'espère que c'est pas trop confus (faut m'excuser c'est lundi et j'ai pas les idées claires :P )
lundi 16 février 2009 à 15:28:55 | Re : Comparaison de tableau (array)

utilisateurbox

Bon je n'ai pas trouvé de fonction ni de réponses je me suis donc auto-répondu :)

Je poste la soluce que j'ai trouver au cas ou quelqu'un en ai besoin.

Fonction de recherche de valeur manquante dans un tableau d'entier (positif ou négatif) :

 				 						
/**************************************************************************************/
 				 						/*                                                                                    */ 				 		
 				 						/*        Fonction de recherche de nombre manquant dans un tableau (array)            */ 				 		
 				 						/*                                                                                    */ 				 		
 				 						/*        Description :                                                               */ 				 		
 				 						/*        -------------                                                               */ 				 		
 				 						/*                            Cette fonction prend en entrée un tableau (array),      */ 				 		
 				 						/*                            tri celui ci par ordre croissant et retourne            */ 				 		
 				 						/*                            toutes les valeurs manquantes dans l'intervalle         */ 				 		
 				 						/*                            spécifié par la valeur maximum et minimum du            */ 				 		
 				 						/*                            tableau.                                                */ 				 		
 				 						/*                                                                                    */ 				 		
 				 						/*        Parametre accepté :                                                         */ 				 		
 				 						/*                                    Un tableau (array) d'entier                     */ 				 		
 				 						/*                                                                                    */ 				 		
 				 						/*        Retourne :                                                                  */ 				 		
 				 						/*                    Un tableau (array) d'entier                                     */ 				 		
 				 						/*                                                                                    */ 				 		
 				 						/**************************************************************************************/ 				 		
 				
function Cherche_Nbr_Manquant($tab_1)
{
 				 						/* Tri des valeurs par ordre croissant */ 				 		
    sort($tab_1) ;
    
 				 						/* Récupération de la valeur la plus haute dans la variable $val_max 				 		
 				 						    qui est la borne maximum de mon intervalle */ 				 		
    $val_max=0 ;                      // J'initialise une variable a zéro
    foreach ($tab_1as$ind=> $val)    // Je parcours mon tableau
    {
        if ($val > $val_max)            // Je compare si la valeur du tableau est plus grande que ma variable $val_max
        {                                   // si c'est le cas alors ...
            $val_max = $val ;               // ... cette valeur devient la nouvelle valeur de $val_max pour la comparaison
        }
    }                                   // Je boucle jusqu'à avoir parcouru tout mon tableau 

 				 						/* Remise a zéro du pointeur de tableau */ 				 		
    reset($tab_1) ;
 				
/* Récupération de la valeur la plus basse dans la variable $val_min
 				 						    qui est la borne minimum de mon intervalle */ 				 		
    $val_min = $val_max ;               // J'initialise ma variable avec la valeur maximum de mon tableau
    foreach ($tab_1as$ind => $val)    // Je parcours mon tableau
    {
        if ($val_min >= $val)           // Je compare si la valeur du tableau est plus petite que ma variable $val_min
        {                                   // si c'est le cas alors ...
            $val_min = $val ;               // ... cette valeur devient la nouvelle valeur de $val_min pour la comparaison
        }                                   
    }                                   // je boucle jusqu'à avoir parcouru tout mon tableau

 				 						/* Remise a zéro du pointeur de tableau */ 				 		
    reset($tab_1) ;
 				
/* Déclaration du tableau a renvoyer */
    $tab2 = array() ;
 				
/* Le but ensuite est de partir de la borne minimum du tableau d'ajouter "1" a la valeur minimum et de comparer
 				 						    avec la valeur suivante si cette valeur est différente ou pas. Si cette valeur est différente alors elle n'est 				 		
 				 						    pas dans mon tableau sinon elle y est et je pointe dessus. */ 		
 				
/* Définition et initialisation des variables pour la comparaison */
    $val_1 = $tab_1[0] ;     // Variable_1 qui va s'incrémenter initialisée a la valeur de la borne mini (indice 0)
    $i = 1 ;                 // Indice du tableau qui va s'incrémenter initialisé l'indice 1 
    $val_2 = $tab_1[$i] ;    // Variable_2 qui prendra les différentes valeurs successives du tableau
            
    for ($t_i = $val_min ; $t_i < $val_max ; $t_i ++)    // Boucle de parcours du tableau
    {
        $val_1 ++ ;                // J'incrémente ma variable_1
        if ($val_1 != $val_2)      // Si variable_1 est différente de variable_2
        {                              // Alors ça veux dire que ma variable_1 n'est pas dans le tableau
            $tab_2[]= $val_1 ;        // Donc je place la valeur de variable_1 dans mon tableau de sortie
        }                                         
        else                       // Sinon    variable_1 est égale a variable_2                        
        {                              // Alors ça veux dire que ma variable_1 est dans le tableau
            $i ++ ;                    // Donc j'incrémente l'indice du tableau
            $val_2 = $tab_1[$i] ;      // Je place la valeur du nouvel indice dans variable_2
        }                                  
    }                                                   // je boucle jusqu'à avoir parcouru tout mon tableau
 				 						/* Remise a zéro du pointeur de tableau */ 				 		
    reset($tab_1) ;
 				
/* Je retourne le tableau remplis avec les nombres manquant */
    return$tab_2 ;
}        

Il y a plus de commentaire que de code :P

Mais comme je débute je préfère en mettre plein sinon je sais plus ou j'en suis lorsque je relis


Je suis persuadé qu'il y a plus simple. Mais en attendant cette solution fonctionne a merveille.

Je vais essayer de simplifier cet aprém.

lundi 11 mai 2009 à 14:17:15 | Re : Comparaison de tableau (array)

benthebastard

Il y a bien plus simple cher ami : array_diff(), qui compare deux tableaux et recrache un troisième array qui comprend les valeurs que les deux tableaux n'ont pas en commun.

Vu le nombre de fonctions natives pour manipuler les tableaux en PHP, il vaut mieux toujours se dire "je suis sûr(e) qu'une fonction php peut faire ce que je veux". C'est comme ça que je fonctionne, et j'ai toujours trouvé mon bonheur sur php.net... Rien ne sert de ré-inventer la roue! ;)


Cette discussion est classée dans : fonction, tableau, comparaison, array


Répondre à ce message

Sujets en rapport avec ce message

Fonction callback et classes [ par malalam ] Salut :-)J'ai un petit soucis : je veux utiliser array_filter() dans une fonction membre d'une classe.J'ai defini ma fonction callback dans cette meme Retourner un tableau à partir d'une fonction [ par Gregg69 ] Voila mon problème:J'ai une fonction qui me construit un tableau à 2 dimensions et me donne une valeure int.J'aimerais pouvoir retourner ces 2 argumen Tableau (array) (pour les pros du PHP) [ par jockos ] Bonjour,J'ai 2 questions très techniques auxquel je n'ai trouvé AUCUNE réponse sur les nombreux sites et manuels PHP.Est-ce que les élements d'un tabl Envoyer un tableau en paramètre d'une fonction [ par syl2 ] Bonjour,J'aimerais savoir s'il est possible de passer un tableau en paramètre d'une fonction en PHP. en faite, voilà j'ai un formulaire qui contient u retourner un tableau??? [ par kalf ] Bonjour,Voilà mon pb : je voudrais savoir comment faire pour qu'une fonction retourne un tableau pour pouvoir reutiliser ces valeur ultérieurement.ou Tableau array etc... [ par Cestmoi ] J'affiche des données de la facon suivante :foreach($server->rules as $key => $value) { echo $key." = ".$value.""; } problème style dans fonction print""; [ par pyranhaz ] La fonction print""; ne semble pas prendre en charge la mise en style du tableau...Je désire qu'au passage de la souris, la cellule du tableau devienn Charger un array depuis mysql [ par mdog ] bonjour, je cherche a charger depuis mysql un tableau array pour pouvoir l'integrer dans une page, seulement je ne sais pas coment faire, avec ma syta MAJ tableau en fonction de la valeur d'une liste déroulante [ par Gagou_c ] Bonjour,Je voudrais afficher des informations dans un tableau, en fonction de la valeur d'une liste déroulante.Il faudrait que je mette à jour la page comparer array et requête [ par alecto ] Bonjour à tous et merci d'avance pour ceux qui pourront m'aider, voici mon pb :  <?xml:namespace prefix = o ns


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales