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.