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 :

insertion de valeurs dans un array à position précise


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Par défaut insertion de valeurs dans un array à position précise
    Bonjour,

    Je n'arrive pas à trouver de fonction qui permette d'insérer une valeur dans un tableau après une autre mais à une position déterminée.

    ex:
    tableau = 0,40,60.

    dans une boucle je récupère 90 et 70 qui sont des "enfants" de 40. je souhaite trouver un moyen pour que tableau = 0,40,90,70,60.

    autre possibilité, j'ai réussi à faire 2 tableaux, le premier comme en haut puis second = 90 et 70. J'arrive à les intégrer ensemble, seulement ensuite mon nouveau tableau contient un nouveau tableau à la bonne position, mais je cherche à avoir un tableau à 1 dimension (liste).

    Avez-vous une idée ? par défaut je pensais trouver en 2 secondes cette possibilité.

    Merci d'avance.

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Par défaut
    Salut.

    Vu tel que tu décris la chose, je ne vois aucune raison pour que ce que tu souhaites faire soit une fonctionnalité standard....
    je peux me tromper, ou à moins que je n'aie pas compris réellement ce que tu désires, mais à mon avis, tu ne trouveras pas de fonction toute prête.

    Tu veux pouvoir insérer des données à n'importe quel endroit de ton tableau, APRES une certaine donnée?

    Alors je ferai un truc du genre:

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    function tabWriteAfter($tab, $srch, $toAdd)
    {
     // fonction qui admet trois paramètres à son appel: le tableau sur lequel on travaille
    // la VALEUR à scanner, $srch, dans le tableau $tab pour inclure à la suite de la première occurrence trouvée, tes données $toAdd (tableau)
     
     
     
    // on va rechercher si la valeur passée en argument est présente dans le tableau
     
    $i=0;
    $notfound = true;
    $repere;   // variable pour sauver l'indice où se trouver la valeur...
     
            while($i < sizeof($tab) && $notfound)
           {
                    if($tab[$i]==$srch) 
                    { $notfound = false; // on a trouvé, on flag pour arrêter le scan
                       $repere = $i;
                    }
                    else
                       $i++;
           }
     
          // scan terminé : deux solutions - valeur présente (et trouvée), ou pas
     
         if($notfound)
         {
               echo "Dsl, aucune occurrence de ".$srch." dans le tableau";
               return null;  // code erreur, qu'on pourra tester après appel
         }
         else
         {
              // youpi, trouvé $srch, en position $repere dans $tab
              // on va donc inclure $toAdd à partir de $tab[$repere+1] ...
     
             $newTab = Array();
     
             for($i=0; $i<=$repere; $i++)
                 $newTab[$i] = $tab[$i]; 
     
             // les nouvelles données qu'on insère
             for($i=$repere+1, $j=0; $j < sizeof($toAdd) ; $i++, $j++)
             {    $newTab[$i] = $toAdd[$j];  }
     
             // on concatène le reste 
             for($i=$repere+1; $tab[$i] ; $i++)
             {     $newTab[$i] = $tab[$i];   }
     
        return $newTab;   
        }
    }


    Grosso merdo, ca devrait aller...
    Après tu adaptes l'idée et fais les tests nécessaire en fonction du type de valeurs que tu stockes dans tes tableaux... s'il s'agit de caractère, de valeurs numériques, etc.
    Ici, c'est valable pour rechercher des valeurs numériques.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 16
    Par défaut
    Merci pour ton aide, j'ai trouvé une solution pour "aplatir" un array en 1 dimension en conservant l'ordre...

    voici le code ça pourrait servir à quelqu'un d'autre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $flat = array();
    		   $RII = new RecursiveIteratorIterator(new RecursiveArrayIterator($myProdsArray));
    		   foreach ($RII as $value) $flat[] = $value;
    		   $myProdsArray = $flat;

  4. #4
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    C'est un arbre binaire ton affaire ou je me trompe ?
    Car on peut coder un arbre binaire avec un tableau en prenant pour fils gauche l'index du père * 2 et pour le fils droit l'index du père * 2 + 1.
    C'est encore plus facile en PHP que dans tout autre langage vu qu'on peut construire un tableau sans avoir à déclarer tous les index.

    Voilà une class que j'avais monté durant mes cours de structures de données :
    http://xtg-blog.fr/PHP_Heap.zip
    Aucune idée de l'état dans laquelle je l'avais laissée... Mais normalement toute la partie arbre binaire fonctionne, et au pire cela te donnera des pistes à exploiter.

Discussions similaires

  1. Difficulte d'insertion de valeur dans une base de donnees
    Par blondelle dans le forum C++Builder
    Réponses: 10
    Dernier message: 13/04/2007, 21h19
  2. insertion des valeurs dans une colonne
    Par freestyler1982 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/01/2007, 16h38
  3. Fréquence d'insertion de valeurs dans un Vector
    Par pat-trix dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 20/11/2006, 17h20
  4. Réponses: 2
    Dernier message: 28/03/2006, 11h45
  5. Réponses: 5
    Dernier message: 18/11/2005, 22h11

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