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 :

transformer tableau php multidimensionnel en bidimensionnel


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Points : 83
    Points
    83
    Par défaut transformer tableau php multidimensionnel en bidimensionnel
    Voila, je vais essayer d'expliquer mon problème,
    De base j'ai un fichier json
    exemple:
    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
     
    {
        "debug": "on",
        "window": {
            "title": "Sample Konfabulator Widget",
            "name": "main_window",
            "width": 500,
            "height": 500
        },
        "image": { 
            "src": "Images/Sun.png",
            "name": "sun1",
            "hOffset": 250,
            "vOffset": 250,
            "alignment": "center"
        }
    }
    je le transforme en array php
    Code php : 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
     
    array (size=3)
      'debug' => string 'on' (length=2)
      'window' => 
        array (size=4)
          'title' => string 'Sample Konfabulator Widget' (length=26)
          'name' => string 'main_window' (length=11)
          'width' => int 500
          'height' => int 500
      'image' => 
        array (size=5)
          'src' => string 'Images/Sun.png' (length=14)
          'name' => string 'sun1' (length=4)
          'hOffset' => int 250
          'vOffset' => int 250
          'alignment' => string 'center' (length=6)
    mais pour mon affichage j'aimerais obtenir un tableau ayant à peut près cette forme:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
      'debug' => string 'on' 
      'window'.'title' => string 'Sample Konfabulator Widget'
      'window'.'name' => string 'main_window'
      'window'.'width' => int 500
      'window'.'height' => int 500
     
      'image'.'src' => string 'Images/Sun.png'
      'image'.'name' => string 'sun1'
      'image'.'hOffset' => int 250
      'image'.'vOffset' => int 250
      'image'.'alignment' => string 'center'
    mais malgré toutes mes recherches je n'arrive pas à trouver de fonction permettant de remettre le chemin de clé pour chaque valeur du tableau =x

    Quelqu'un aurait-il une idée pour réussir la transformation ?
    Sans pomme nous n'aurions jamais découvert la gravité... Sans tête Non plus.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    il suffit de parcourir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    foreach ($tab as $clef=>$valeur) {
       echo $clef . ' => ';
       if (is_array($valeur)) {
            echo '<br/>';
            foreach ($valeur as $clef2=>$valeur2) {
                    echo $clef . '.' . $clef2 . ' => ' . $valeur2 . '<br/>';
            }
       }
       else {
           echo $valeur . '<br/>';
       }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Points : 83
    Points
    83
    Par défaut
    Ceci va marcher pour un tableau 3 dimensions mais les json que j'importe peuvent me donner des tableaux à x dimensions

    et vu que mon but et de faire changer la valeur par saisie, j'ai intéret de bien prévoir mon coup à l'avance xd
    Sans pomme nous n'aurions jamais découvert la gravité... Sans tête Non plus.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux faire la même en recursif.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Points : 83
    Points
    83
    Par défaut
    c'est ce que je suis en train d'essayer, j'ai juste un peu modifier le code que tu m'as donner pour ne plus avoir de valeur vide avec window=> et image=> ainsi qu'un un niveau supplémentaire pour voir si j'avais bien compris le code

    Code php : 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
     
    foreach ($jsonDecode as $clef=>$valeur) {
    	if(!is_array($valeur)){
    		echo $clef . ' => '.$valeur.'<br/>';
    	}
    	if (is_array($valeur)) {
    		echo '<br/>';
    		foreach ($valeur as $clef2=>$valeur2) {	
    			if(!is_array($valeur2)){
    				echo $clef . '.' . $clef2.' =>'.$valeur2.'<br/>' ;			
    			}
    		}if (is_array($valeur2)){
    			echo '<br/>';
    			foreach($valeur2 as $clef3=>$valeur3){
    				echo $clef.'.'.$clef2.'.'.$clef3.'=> '.$valeur3.'<br/>';
    			}
    		}
    	}
    }

    ça marche plutôt bien comme ça mais la récursion c'est la sécurité xd
    Sans pomme nous n'aurions jamais découvert la gravité... Sans tête Non plus.

  6. #6
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Pas tester mais ça pourrait donner un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function parseArray($array, $start = '') {
    	foreach ($array as $clef=>$valeur) {
    		if(!is_array($valeur)){
    			echo $start.$clef . ' => '.$valeur.'<br/>';
    		}
    		if (is_array($valeur)) {
    			echo '<br/>';
    			echo parseArray($valeur,$start.$clef.'.');
    		}
    	}
    }
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Points : 83
    Points
    83
    Par défaut
    oui c'est exactement ça
    j'avais réussi à faire la récursivité mais pas encore a récupérer la clef complète
    vraiment génial merci

    mon code si jamais quelqu' un n'est intéressé que par la dernière clef:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function recursif_foreach($tableau){
    	foreach ($tableau as $clef => $valeur){
    		if(is_array($valeur)){
    			yolo($valeur);
    		}else{
    			echo $clef.' => '.$valeur.'<br/>';
    		}
    	}
    }
    recursif_foreach($un_tableau);

    Sans pomme nous n'aurions jamais découvert la gravité... Sans tête Non plus.

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 84
    Points : 83
    Points
    83
    Par défaut
    j'ai retravaillé le code pour avoir en sortie un tableau beaucoup plus facilement utilisable,
    en effet l'ancien code donnait un affichage mais ne permettant pas un grand panel d'utilisation ^^'

    voici l'oeuvre de mon génie

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    function array_flatten($array,$start='') { // $array à n'importe quelle dimension
    	$return = array();
    	foreach ($array as $clef => $value) {
    		if (is_array($value)){ 
    			$return = array_merge($return, array_flatten($value,$start.$clef.'*')); //.' ' est votre séparateur de clef, ici une '*'
    		}else {
    			$return[$start.$clef] = $value;
    		}
    	}
       return $return;
    }
    $array=$votre_tableau; // $votre_ tableau à remplacer par votre tableau 
    $result = array_flatten($array); 
    var_dump($result); // affichage

    Spartacusply m'a ouvert la voie de la solution
    Sans pomme nous n'aurions jamais découvert la gravité... Sans tête Non plus.

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

Discussions similaires

  1. transformer un tableau PHP en tableau JavaScript
    Par voyageurdumonde dans le forum Langage
    Réponses: 7
    Dernier message: 16/06/2010, 15h30
  2. Transformer mon tableau php en un tableau js (50% du travail fait)
    Par beegees dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/03/2009, 11h06
  3. Réponses: 1
    Dernier message: 26/03/2008, 18h21
  4. Réponses: 1
    Dernier message: 06/06/2007, 14h02
  5. Réponses: 2
    Dernier message: 23/05/2007, 10h40

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