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 :

suppression d'une ligne dans un tableau multidimensionnel


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut suppression d'une ligne dans un tableau multidimensionnel
    Bonjour,
    voici mon problème, j'ai en entrez un tableau associatif celui ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $tab['prod'] = array(
        array('id'=>'P01','designation' => 'Produit 1', 'prix' => '35'),
        array('id'=>'P02','designation' => 'Produit 2', 'prix' => '30'),
        array('id'=>'P03','designation' => 'Produit 3', 'prix' => '25'),
        array('id'=>'P04','designation' => 'Produit 4', 'prix' => '15'),
        array('id'=>'P05','designation' => 'Produit 5', 'prix' => '37')
    );
    en gros je dois créer une fonction qui va supprimer une ligne complète, donc je créer un tableau temporaire et je recopie ligne par ligne avec la fonction array_push mais mon problème c'est que mon tableau temporaire n'a pas exactement la même structure que celui ci(les associations...), j'ai du du mal a créer un tableau associatif vide si quelqu'un peut m'aider! merci par avance

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Pour faire ce que tu souhaites il n'y a pas besoin de recopier tout ton tableau dans un autre.
    Ton tableau est équivalent à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $tab['prod'] = array(
       1 => array('id'=>'P01','designation' => 'Produit 1', 'prix' => '35'),
       2 => array('id'=>'P02','designation' => 'Produit 2', 'prix' => '30'),
       3 => array('id'=>'P03','designation' => 'Produit 3', 'prix' => '25'),
       4 => array('id'=>'P04','designation' => 'Produit 4', 'prix' => '15'),
       5 => array('id'=>'P05','designation' => 'Produit 5', 'prix' => '37')
    );
    Donc quand tu souhaites supprimer une ligne par exemple : P04 tu n'as qu'à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unset($tab['prod'][4]);
    Et comme ça tu ne touche pas à la structure du tableau initial et aucune copie n'a été nécessaire.

  3. #3
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Attention à deux choses:

    1) les indexes commencent à 0, pas à 1

    2) En utilisant unset il n'y a pas 'renumérotation' des indexes,
    ça laisse un trou dans la séquence d'indexes et peut être
    source d'erreur si on cherche à supprimer à nouveau une ligne.

    On peut utiliser array_merge pour forcer une renumérotation.

    Code de test:
    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
     
    header('Content-Type: text/plain');
     
    $tab['prod'] = array(
       array('id'=>'P01','designation' => 'Produit 1', 'prix' => '35'),
       array('id'=>'P02','designation' => 'Produit 2', 'prix' => '30'),
       array('id'=>'P03','designation' => 'Produit 3', 'prix' => '25'),
       array('id'=>'P04','designation' => 'Produit 4', 'prix' => '15'),
       array('id'=>'P05','designation' => 'Produit 5', 'prix' => '37')
    );
     
    print_r($tab['prod']);
    unset($tab['prod'][3]);
    print_r($tab['prod']);
    $tab['prod'] = array_merge($tab['prod']);
    print_r($tab['prod']);

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    merci ça marche a merveille

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Oups, merci marcha. Boulette.

    Un complément à ton post : il est aussi possible de renuméroter en utilisant un array_values() sur le tableau à réindexer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab['prod'] = array_values($tab['prod']);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression d'une ligne dans un tableau
    Par guigui69 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 27/11/2008, 18h47
  2. Suppression d'une ligne dans un txt : via un tableau ?
    Par renaud26 dans le forum Langage
    Réponses: 4
    Dernier message: 13/09/2008, 18h49
  3. Réponses: 5
    Dernier message: 10/11/2006, 11h00
  4. [HTML]Débutant-Suppression d'une ligne dans un tableau
    Par Kotik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 19/07/2006, 11h53
  5. probleme bizarre de hauteur auto d'une ligne dans un tableau
    Par zax-tfh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/01/2005, 23h34

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