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 :

[Tableaux] Supprimer un élément puis réindexer le tableau


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Auditeur informatique
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Points : 85
    Points
    85
    Par défaut [Tableaux] Supprimer un élément puis réindexer le tableau
    Bonjour,
    Existe t-il une fonction qui permet de supprimer un index et sa valeur associé ?

    Ex:
    $tab[0]=a;
    $tab[1]=b;
    $tab[2]=c;
    $tab[3]=d;
    <--la dite fonction pour supprimer l'indice 2 pr ax -->
    $tab[0]=a;
    $tab[1]=b;
    $tab[2]=d;

    Cordialement,
    Nicolas

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 049
    Points : 1 380
    Points
    1 380
    Par défaut
    array_splice()....à vérifier...

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    unset( ) puis array_merge( ) pour réindexer le tableau.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Membre régulier Avatar de Merfolk
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    je t'aime Seb

    ... depuis le temps que je chercher un moyen efficace de faire ça. Je n'avais pas penser à array_merge

    Cf ce code
    (mon soucis c'etait aussi que je commence à 1 les indices et pas à 0)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?
    print("ok");
     
     
    $liste = array();
     
    $liste[1]="a";
    $liste[2]="b";
    $liste[3]="c";
    $liste[4]="d";
    $liste[5]="e";
     
    print("<pre>");
    print_r($liste);
    print("</pre>");
     
     
     
    unset($liste[2]);
    $liste = array_merge(array("0"=>''),$liste);
    unset($liste[0]);
     
    print("<pre>");
    print_r($liste);
    print("</pre>");
     
     
    ?>
    Chasseur de bug en activité
    L'erreur est humaine, mais pour vraiment foutre le bordel, on a besoin d'un ordinateur

  5. #5
    Rédactrice
    Avatar de xave
    Femme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2002
    Messages : 871
    Points : 1 094
    Points
    1 094
    Par défaut
    Array_splice me semble encore plus simple non?

  6. #6
    Membre régulier Avatar de Merfolk
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    peux-tu préciser comment utiliser array splice s' il te plait ?... ça ne me saute pas du tout aux yeux

    merci
    Chasseur de bug en activité
    L'erreur est humaine, mais pour vraiment foutre le bordel, on a besoin d'un ordinateur

  7. #7
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    array_values() possède aussi une propriété de réindexation, je crois.

    Pour reprendre le code précédent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unset($liste[2];
    array_values($liste);

  8. #8
    Membre régulier Avatar de Merfolk
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    170
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    exact oui; enfin le soucis avec array values cest que ca fait commencer à 0.

    ce n'est pas un soucis en fait, mais si tu reçoits des données d'un formulaire, et si ton but c'est de "unset" les lignes qui n'ont pas été remplies, c'est embetant car en général c'est plutot champ1 champ2 ... que champ0 champ 1

    (je n'ai toujours pas compris comment utiliser array_splice)
    Chasseur de bug en activité
    L'erreur est humaine, mais pour vraiment foutre le bordel, on a besoin d'un ordinateur

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 123
    Points : 84
    Points
    84
    Par défaut
    Citation Envoyé par Merfolk
    peux-tu préciser comment utiliser array splice s' il te plait ?... ça ne me saute pas du tout aux yeux

    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array_splice($tableau, $offset, 1);
    Utilisée comme ça, array_splice va supprimer l'élément désigné par $offset de ton tableau $tableau, et réindexer le tout.
    Un peu de lecture pour compléter tout ça ne fera pas de mal :http://www.php.net/manual/en/function.array-splice.php
    Things working well, no problems. Time to upgrade.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Content d'être tombé sur ce topic via google, ça faisait un moment que je m'arrachais les cheveux sur la suppression d'une ligne !

    D'après mes tests, unset et array_splice shootent bien la ligne demandée, par contre le tableau n'est pas réindexé.

    Vos messages m'ont aidé à résoudre le problème :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach ($tableau AS $key => $lignetableau) {
     
    if (pouruneraisonoupouruneautre == tudoisvirerlaligne) unset($tableau[$key]);
     
    }
     
    // et pour réindexer :
    $tableau = array_values($tableau);

    Et zou c'est réglé =)

    Merci à tous,
    Ben

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/05/2009, 13h50
  2. [Tableaux] supprimer un élément d'un tableau
    Par banzzai dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2006, 15h52
  3. [Tableaux] Supprimer 1 élément particulier d'1 tableau
    Par harlock59 dans le forum Langage
    Réponses: 22
    Dernier message: 17/05/2006, 16h50
  4. Supprimer les éléments diagonaux d'un tableau
    Par doubs dans le forum Pascal
    Réponses: 2
    Dernier message: 04/05/2006, 22h53
  5. Supprimé des éléments vide d'un tableau
    Par shinux2004 dans le forum Langage
    Réponses: 4
    Dernier message: 04/07/2005, 19h40

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