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 :

Transformation d'un array multidimensions en un array "unidimension"


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 18
    Par défaut Transformation d'un array multidimensions en un array "unidimension"
    Bonjour à tous,

    Je suis confronté à un array qui me donne beaucoup de fil à retordre...

    Dans un array, j'ai stocké 2 élements, à chacun de ses 2 éléments, sont associé 2 paramètres et leur valeur.


    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
    
    Array ( 
    	[0] => Array ( 
    			[titre] => element1
    			[cle] => parametre1
                            [valeur] => valeur-parametre1
    	) [1] => Array ( 
    			[titre] => element1
    			[cle] => parametre2
                            [valeur] => valeur-parametre2
    	) [2] => Array ( 
    			[titre] => element2
    			[cle] => parametre1
                            [valeur] => valeur-parametre1
    	) [3] => Array ( 
    			[titre] => element2
    			[cle] => parametre2
                            [valeur] => valeur-parametre2
    	)

    J'essaye d'obtenir un array final qui ressemblerai à :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    Array ( 
    	[0] => Array ( 
    			[titre] => element1
    			[parametre1] => valeur-parametre1
    			[parametre2] => valeur-parametre2
    	) [1] => Array ( 
    			[titre] => element2
    			[parametre1] => valeur-parametre1
    			[parametre2] => valeur-parametre2
    	)
    Donc pour résumer une fusion en conservant les données des "doublons".

    Je me perd entre les foreach et les for... multipliant les boucles... j'ai d'ailleurs perdu mon cerveau dans une de ses boucles !

    D'avance je vous remercie de votre aide.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    fait un var_export pour envoyer ton tableau

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 18
    Par défaut
    Voila apres un var_export :

    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
     
    array ( 0 => array ( 'titre' => 'element1', 
                         'cle' => 'parametre1',
                         'valeur' => 'valeur-parametre1', 
          ), 1 => array ( 'titre' => 'element1',
                        'cle' => 'parametre2',
                        'valeur' => 'valeur-parametre2', 
          ), 2 => array ( 'titre' => 'element2',
                        'cle' => 'parametre1',
                        'valeur' => 'valeur-parametre1', 
          ), 3 => array ( 'titre' => 'element2',
                        'cle' => 'parametre2', 
                        'valeur' => 'valeur-parametre2', 
          ),
     )

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    comme ca :
    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
    $arr = array ( 0 => array ( 'titre' => 'element1', 
                         'cle' => 'parametre1',
                         'valeur' => 'valeur-parametre1', 
          ), 1 => array ( 'titre' => 'element1',
                        'cle' => 'parametre2',
                        'valeur' => 'valeur-parametre2', 
          ), 2 => array ( 'titre' => 'element2',
                        'cle' => 'parametre1',
                        'valeur' => 'valeur-parametre1', 
          ), 3 => array ( 'titre' => 'element2',
                        'cle' => 'parametre2', 
                        'valeur' => 'valeur-parametre2', 
          ),
     );
     
    $out = array();
     
    foreach($arr as $item)
    {
        $tmp               = &$out[$item['titre']];
        $tmp['titre']      = $item['titre'];
        $tmp[$item['cle']] = $item['valeur'];
    }
     
    $out = array_values($out);
    print_r($out);

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 18
    Par défaut
    Merci beaucoup, c'est parfait !

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

Discussions similaires

  1. Transformer un Range d'une colonne en Array une dimension
    Par funtim78 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/12/2012, 00h50
  2. Réponses: 3
    Dernier message: 01/07/2012, 01h26
  3. Réponses: 7
    Dernier message: 21/11/2011, 17h08
  4. Réponses: 5
    Dernier message: 22/09/2008, 10h57
  5. Réponses: 6
    Dernier message: 04/12/2006, 10h22

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