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] insérer un enregistrement au milieu d'un array


Sujet :

Langage PHP

  1. #1
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut [Tableaux] insérer un enregistrement au milieu d'un array
    Bonjour,

    je cherche à insérer un enregistrement au milieu d'un array tout en conservant les enregistrements précédents. Concrètement, comment faire pour que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Array
    (
        [0] => Camille
        [1] => Jean
        [2] => Swan
        [3] => Audrey
        [4] => Pierre
    )
    devienne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Array
    (
        [0] => Camille
        [1] => Jean
        [2] => Swan
        [3] => Nouveau
        [4] => Audrey
        [5] => Pierre
    )

    ????

    Merci d'avance de votre aide !

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Tu vas devoir utiliser un 2eme tableau .

    l'idée :

    - Parcourir le tableau d'origine en insérant les données dans le nouveau
    - une fois le rang de la nouvelle valeur atteint , insérer la dite valeur
    - continuer l'insertion des valeurs suivantes dans le nouveau tableau.
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    Si tu connais la position ou l'insérer :
    • recopie du tableau initial dans un second jusqu'à l'indice concerné avec arraypush dans une boucle ;
    • Ajout de ton item ;
    • arraypush de la fin de ton tableau initial dans le second ;
    • retour du second tableau ;

  4. #4
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    Merci bien , voici donc ce que j'ai fait :
    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
    $tableau = array(Camille, Jean, Swan, Audrey, Pierre);
     
    foreach ($tableau as $numero => $ligne)
    {
    if ($numero < 2)
    {
    $NouveauTableau[] = $ligne;
    }
     
    if ($numero ==2)
    {
    $NouveauTableau[2] = 'Nouveau';
    }
     
    if ($numero >= 2)
    {
    array_push($NouveauTableau, $ligne);
    }
    }
     
    print_r($NouveauTableau);

  5. #5
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    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
     
    function insert_i($tab,$elt,$indice)
    {
        $tab_tmp = array() ;
        $ind_tmp = 0 ;
     
        while($ind_tmp != $indice)
        {
            array_push($tab_tmp,$tab[$ind_tmp]);
            $ind_tmp++ ;
        }
     
        array_push($tab_tmp,$elt);
     
        while($ind_tmp != (count($tab)-1))
        {
            array_push($tab_tmp,$tab[$ind_tmp]);
            $ind_tmp++ ;
        }
     
        return $tab_tmp ;
    }
    Voila ce que j'aurai fait mais ton idée est bonne aussi...
    Juste mettre le tout dans une fonction de manière à pouvoir l'effectuer sur tout type de tableau à 1 dimension pour n'importe quel index désiré !
    Bon courage

  6. #6
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Points : 12 572
    Points
    12 572
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function insert_i($tab,$valeurInsert,$indice)
    {
        foreach($tab as $cle=>$valeur)
        {
           if ($cle == $indice)
                array_push($nouveauTab,$valeurInsert);
     
           array_push($nouveauTab,$valeur);
        }
     
       return $nouveauTab;
    }
    pas testé mais beaucoup plus simple
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  7. #7
    Membre averti Avatar de rems033
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    513
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2007
    Messages : 513
    Points : 345
    Points
    345
    Par défaut
    C'est clair !
    j'avais pondu ca en 2min avec mon sandwich !

  8. #8
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 90
    Points : 57
    Points
    57
    Par défaut
    Testé et vendu !
    J'ai juste ajouté $nouveauTab = array(); en début de fonction sinon j'avais un message d'erreur.

    Encore merci à vous 2 !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/07/2006, 18h55
  2. Insérer un enregistrement dans un fichier XML
    Par insane_fr dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 19/05/2006, 21h30
  3. [Tableaux] Insérer des éléments à un tableau
    Par richard038 dans le forum Langage
    Réponses: 5
    Dernier message: 11/05/2006, 22h02
  4. boucle pour insérer des enregistrements
    Par roots_man dans le forum ASP
    Réponses: 7
    Dernier message: 05/10/2004, 09h28
  5. Insérer plusieurs enregistrements en une seule requête
    Par pyd001 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2004, 10h38

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