56 votes

php array_push() -> Comment ne pas pousser si le tableau contient déjà la valeur

J'utilise la boucle suivante pour ajouter des éléments à un de mes tableaux appelé $ liste. Je voudrais savoir s'il est possible de ne pas ajouter $value au tableau $liste si la valeur est déjà dans le tableau? J'espère que je suis clair. Merci en avance.

 $liste = array();
foreach($something as $value){
     array_push($liste, $value);
}

115voto

Rocket Hazmat Points 87407

Vous vérifiez s'il est là, en utilisant in_array , avant de pousser.

 foreach($something as $value){
    if(!in_array($value, $liste, true)){
        array_push($liste, $value);
    }
}

Le ,true permet une "vérification stricte". Ceci compare les éléments en utilisant === au lieu de == .

30voto

Niet the Dark Absol Points 154811

Deux options vraiment.

Option 1 : Vérifiez chaque élément et n'appuyez pas si l'élément s'y trouve. En gros ce que tu demandes :

 foreach($something as $value) {
    if( !in_array($value,$liste)) array_push($liste,$value);
}

Option 2 : ajoutez-les quand même et supprimez les doublons après :

 foreach($something as $value) {
    array_push($liste,$value);
}
$liste = array_unique($liste);

À première vue, vous cherchez peut-être simplement $liste = array_unique($something); .

5voto

bjelli Points 3569

peut-être souhaitez-vous plutôt l'utiliser comme tableau associatif. c'est implémenté comme (quelque chose comme) une table de hachage , donc vous obtenir un temps d'insertion constant au lieu de linéaire.

 function find_uniq( $something ) {
    foreach($something as $value){
         $liste[$value]++;
    }
    return array_keys( $liste );
}

3voto

Jazz Points 843

Vous pouvez simplement vérifier cette condition avant d'appeler array_push() . Utilisez array_search() et utilisez une comparaison forte avec false pour voir si la valeur est présente :

 foreach( $something as $value ){
    if( array_search( $value, $liste, true ) === false ){
        array_push( $liste, $value );
    }
}

(Au fait : ajoutez ,true à array_search pour utiliser la "vérification stricte". Cela utilisera === pour les comparaisons au lieu de == )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X