IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupérer uniquement les valeurs non null d'un array


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 178
    Par défaut Récupérer uniquement les valeurs non null d'un array
    Bonjour, je souhaiterais savoir comment récupérer uniquement les valeurs non null d'un array.

    par exemple si j'ai 5 variable dont la 3e est vide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $var1 = "a";
    $var2 = "b";
    $var3 = "";
    $var4 = "d";
    $var5 = "e";
     
    $tab = array($var1,$var2,$var3,$var4,$var5);
    Lorsque je fais un forceach
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <ul>
    foreach($tab as $valeur){<li>$valeur</li>}
    </ul>
    J'obtiens ceci

    • A
    • b
    • .
    • d
    • e


    Alors que je souhaite avoir ceci

    • A
    • b
    • d
    • e


    Merci pour toute aide

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php
    print("<ul>");
    foreach($tab as $valeur){
    if($valeur<>""){
    print("<li>$valeur</li>");
    }
    }
    print("</ul>");
    ?>

  3. #3
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    Tu peux utiliser la fonction empty pour le tester.

    A+.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 50
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <ul>
    foreach($tab as $valeur){if(!empty($valeur)) echo '<li>$valeur</li>';}
    </ul>

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 316
    Par défaut
    bonsoir,
    je suis surpris car si je me réfère à la doc Php, empty considérerait comme vide les valeurs suivantes:
    Retourne FALSE si var a une valeur non-vide et différente de zéro.

    Ce qui suit est considéré comme étant vide :

    * "" (une chaîne vide)
    * 0 (0 en tant qu'entier)
    * "0" (0 en tant que chaîne de caractères)
    * NULL
    * FALSE
    * array() (un tableau vide)
    * var $var; (une variable déclarée, mais sans valeur dans une classe)

    Version Description
    PHP 5

    Depuis PHP 5, les objets n'ayant pas de propriétés ne sont plus considérés comme vide.
    PHP 4

    Depuis PHP 4, la chaîne de caractères "0" est considérée comme vide.
    le fait d'utilisercomme condition excluerait donc toutes les valeurs citées plus haut.

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par notar
    comme condition excluerait donc toutes les valeurs citées plus haut.
    Tout à fait, c'est vrai qu'un empty est assez expéditif, mais n'est-ce pas pratique aussi ?

    D'ailleurs, on peu aussi être surpris de la question au départ : récupérer uniquement les valeurs non null
    Pourtant, une valeur nulle n'est pas l'équivalent d'une valeur vide
    C'est valable aussi coté Base De Donnée.
    Il y a déjà un amalgame dans la question, de la considération que l'on fait sur une valeur.

    Pour savoir si une valeur est réellement nulle par exemple, il y a la fonction : is_null(), etc ...
    En faite, en parallèle, Php offre malgré tout le moyen de faire des vérifs très précises.
    Donc au final, il y a pas vraiment à être surpris, faut juste savoir et considérer cette fonction comme une succession de fonctions excluant plusieurs cas, ceci en 1 seule condition.
    Il faut juste faire gaffe à ne pas l'utiliser à tord et à travers, je pense particulièrement à la valeur 0.

    Se référer à la doc est donc un très bon réflexe.

Discussions similaires

  1. Récupérer les lignes non nulles
    Par aurelie83 dans le forum SSIS
    Réponses: 7
    Dernier message: 03/04/2012, 15h00
  2. Récupérer les valeurs non sélectionnées
    Par Nico_SAS dans le forum jQuery
    Réponses: 3
    Dernier message: 13/02/2012, 11h28
  3. Garder les valeurs non nulles dans une matrice
    Par mfontan dans le forum MATLAB
    Réponses: 4
    Dernier message: 03/04/2009, 13h42
  4. Extraire les valeurs non nulles d'une matrice
    Par kwatz dans le forum MATLAB
    Réponses: 15
    Dernier message: 06/03/2009, 11h15
  5. Récupérer nombre de cellule de valeur non nulle
    Par Bibicmoi dans le forum Excel
    Réponses: 8
    Dernier message: 24/01/2009, 19h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo