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 :

Array mal formaté


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut Array mal formaté
    Bonjour,
    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
    $pages = array(
    	1 => array('label'=>'Home', 'slug'=>'home', 'parent'=>0),
    	2 => array('label'=>'About us', 'slug'=>'about-us', 'parent'=>0),
    	3 => array('label'=>'Issue', 'slug'=>'issue', 'parent'=>2),
    	4 => array('label'=>'Background', 'slug'=>'background', 'parent'=>2),
    	5 => array('label'=>'Profile', 'slug'=>'profile', 'parent'=>2),
    	6 => array('label'=>'Test', 'slug'=>'test', 'parent'=>2),
    	7 => array('label'=>'Procedures', 'slug'=>'procedures', 'parent'=>6),
    	8 => array('label'=>'Company development plan', 'slug'=>'company-development-plan', 'parent'=>2),
    	3 => array('label'=>'Team', 'slug'=>'team', 'parent'=>2),
    	10 => array('label'=>'Solutions', 'slug'=>'solutions', 'parent'=>0),
    	11 => array('label'=>'News & events', 'slug'=>'news-events', 'parent'=>0),
    	12 => array('label'=>'Partners', 'slug'=>'partners', 'parent'=>0),
    	13 => array('label'=>'Contact us', 'slug'=>'contact-us', 'parent'=>0)
    );
     
    function recurse_tree($array, $id) {
    	$result = array();
    	foreach ($array as $key => $node) {
    		if ( $key == $id ) {
    			array_push($result, array('id' => $key, 'label' => $node['label'], 'slug' => $node['slug'], 'parent' => $node['parent']));
    			if ( $node['parent'] > 0 ) array_push($result, recurse_tree($array, $node['parent']));
    		}
    	}
    	return $result;
    }
     
    echo '<pre>';
    print_r(recurse_tree($pages, 7));
    echo '</pre>';
    Résultat :
    Array
    (
    [0] => Array
    (
    [id] => 7
    [label] => Procedures
    [slug] => procedures
    [parent] => 6
    )

    [1] => Array
    (
    [0] => Array
    (
    [id] => 6
    [label] => Test
    [slug] => test
    [parent] => 2
    )

    [1] => Array
    (
    [0] => Array
    (
    [id] => 2
    [label] => About us
    [slug] => about-us
    [parent] => 0
    )

    )

    )

    )
    Moi je souhaite ce retour :
    Array
    (
    [0] => Array
    (
    [id] => 7
    [label] => Procedures
    [slug] => procedures
    [parent] => 6
    )

    [1] => Array
    (
    [id] => 6
    [label] => Test
    [slug] => test
    [parent] => 2
    )
    [2] => Array
    (
    [id] => 2
    [label] => About us
    [slug] => about-us
    [parent] => 0
    )

    )
    Comment faire ?

    Merci d'avance...

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    --

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    papajoker, honnêtement que je ne comprends rien dans votre propos.

    Merci d'avance...

    sabotage, plus de récursion ? Et la recurse_tree($array, $id) dans tout ça ?

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    array_merge() a la place de array_push()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function getTree(&$array,$id){
    	if ($id<1) return array();
    	foreach($array as $key=>$node) {
    		if ($id==$key){
    			$result[$key] = $node;
    			$result[$key]['id'] = $key;
    			$result= array_merge($result, getTree($array,$node['parent']));
    		}
    	}
    	return $result;
    }
    edit

    j'avais pas compris (comme sabo) le probleme !
    tu donnes l'enfant et il faut remonter tout l'arbre pour afficher les parents, grand-parents ...

  5. #5
    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
    Par défaut
    Il n'y a pas de recursion dans ton souhait de sortie.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Si si, dans le code de sa fonction, il y a bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( $node['parent'] > 0 ) array_push($result, recurse_tree($array, $node['parent']));
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 324
    Par défaut
    Citation Envoyé par papajoker Voir le message
    array_merge() a la place de array_push()
    ok ca marche , met le sujet en résolu

  8. #8
    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
    Par défaut
    ça sent bon les recherches :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($pages as $key=>$value) {
    	$result[$key] = $value;
    	$result[$key]['id'] = $key;
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Sortie 10g vers excel mal formatée
    Par mongilotti dans le forum Reports
    Réponses: 1
    Dernier message: 17/03/2010, 09h40
  2. Réponses: 6
    Dernier message: 23/02/2010, 14h57
  3. [eCommerce] Montant objet mal formaté
    Par bernard26000 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 01/02/2008, 08h16
  4. [SOAP] requête cliente mal formatée
    Par mickael.guilbert dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 11/12/2007, 15h03
  5. [PrintWriter] fichier mal formaté
    Par delph1983 dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 08/02/2007, 12h24

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