Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1591 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Organisation Array

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Organisation Array

n°2218360
jokeoff
Posté le 02-02-2014 à 14:09:43  profilanswer
 

Bien le bonjour à tous,
 
Je viens vers vous pour un petit problème de "mise en forme" d'un Array. Modifier un Array plat vers un Array hiérarchique (arbre ou tree en anglais).
Alors pour commencer l'array plat que je doit modifier je l'obtiens avec la fonction imap_getmailboxes, j'ai remplacer cet array par la variable $folders dans le code suivant.
 
J'ai déjà réussi à mettre en forme mon array hiérarchique, mais pas comme je le souhaite, voici le code :
 

Code :
  1. $folders = array(
  2.   array('Name' => 'Archive', 'Value' => 'Archive', 'Attributes' => 32, 'Delimiters' => '/'),
  3.   array('Name' => 'Folder1', 'Value' => 'Archive/Folder1', 'Attributes' => 32, 'Delimiters' => '/'),
  4.   array('Name' => 'Folder1A', 'Value' => 'Archive/Folder1/Folder1A', 'Attributes' => 32, 'Delimiters' => '/'),
  5.   array('Name' => 'Folder1B', 'Value' => 'Archive/Folder1/Folder1A/Folder1B', 'Attributes' => 64, 'Delimiters' => '/'),
  6.   array('Name' => 'Folder2', 'Value' => 'Archive/Folder2', 'Attributes' => 32, 'Delimiters' => '/'),
  7.   array('Name' => 'Folder2A', 'Value' => 'Archive/Folder2/Folder2A', 'Attributes' => 32, 'Delimiters' => '/'),
  8.   array('Name' => 'Folder2B', 'Value' => 'Archive/Folder2/Folder2A/Folder2B', 'Attributes' => 64, 'Delimiters' => '/'),
  9. );
  10.  
  11. $tree = BuildTree($folders);
  12. var_dump($tree);
  13. print_r($tree);
  14.  
  15. function BuildTree($array) {
  16.      $return = array();
  17.      foreach ($array as $value) {
  18.       $split = '/'.preg_quote($value['Delimiters'], '/').'/';
  19.       $parts = preg_split($split, $value['Value'], -1, PREG_SPLIT_NO_EMPTY);
  20.          $leafpart = array_pop($parts);
  21.          $parent = &$return;
  22.    
  23.          foreach ($parts as $part)
  24.              $parent = &$parent[$part];
  25.  
  26.    $parent[$leafpart] = array('Name' => $value['Name'], 'Value' => $value['Value']);
  27.      }
  28.      return $return;
  29. }


 
Avec se code on obtiens le résultat suivant :

Code :
  1. Array (
  2.     [Archive] => Array (
  3.         [Name] => Archive
  4.         [Value] => Archive
  5.         [Folder1] => Array (
  6.             [Name] => Folder1
  7.             [Value] => Archive/Folder1
  8.             [Folder1A] => Array (
  9.                 [Name] => Folder1A
  10.                 [Value] => Archive/Folder1/Folder1A
  11.                 [Folder1B] => Array (
  12.                     [Name] => Folder1B
  13.                     [Value] => Archive/Folder1/Folder1A/Folder1B
  14.                 )
  15.             )
  16.         )
  17.         [Folder2] => Array (
  18.             [Name] => Folder2
  19.             [Value] => Archive/Folder2
  20.             [Folder2A] => Array (
  21.                 [Name] => Folder2A
  22.                 [Value] => Archive/Folder2/Folder2A
  23.                 [Folder2B] => Array (
  24.                     [Name] => Folder2B
  25.                     [Value] => Archive/Folder2/Folder2A/Folder2B
  26.                 )
  27.             )
  28.         )
  29.     )


 
Hors j'aurais voulu obtenir ceci :

Code :
  1. Array (
  2.     [0] => Array (
  3.         [Name] => Archive
  4.         [Value] => Archive
  5.         [SubNode] => Array (
  6.             [0] => Array (
  7.                 [Name] => Folder1
  8.                 [Value] => Archive/Folder1
  9.                 [SubNode] => Array (
  10.                     [0] => Array (
  11.                         [Name] => Folder1A
  12.                         [Value] => Archive/Folder1/Folder1A
  13.                         [SubNode] => Array (
  14.                             [0] => Array (
  15.                                 [Name] => Folder1B
  16.                                 [Value] => Archive/Folder1/Folder1A/Folder1B
  17.                             )
  18.                         )
  19.                     )
  20.                 )
  21.             )
  22.             [1] => Array (
  23.                 [Name] => Folder2
  24.                 [Value] => Archive/Folder2
  25.                 [SubNode] => Array (
  26.                     [0] => Array (
  27.                         [Name] => Folder2A
  28.                         [Value] => Archive/Folder2/Folder2A
  29.                         [SubNode] => Array (
  30.                             [0] => Array (
  31.                                 [Name] => Folder2B
  32.                                 [Value] => Archive/Folder2/Folder2A/Folder2B
  33.                             )
  34.                         )
  35.                     )
  36.                 )
  37.             )
  38.         )
  39.     )
  40. )


 
Et je parviens pas à modifier mon code pour avoir se dernier résultat.
 
En gros je cherche à construire l'array suivant par le biais de ma fonction BuildTree
 

Code :
  1. $treefolders = array(
  2.      array('Name' => 'Archive', 'Value' => 'Archive', 'SubNode' =>
  3.          array(
  4.              array('Name' => 'Folder1', 'Value' => 'Archive/Folder1', 'SubNode' =>
  5.                  array('Name' => 'Folder1A', 'Value' => 'Archive/Folder1/Folder1A', 'SubNode' =>
  6.                      array('Name' => 'Folder1B', 'Value' => 'Archive/Folder1/Folder1A/Folder1B')
  7.                  )
  8.              ),
  9.              array('Name' => 'Folder2', 'Value' => 'Archive/Folder2', 'SubNode' =>
  10.                  array('Name' => 'Folder2A', 'Value' => 'Archive/Folder2/Folder2A', 'SubNode' =>
  11.                      array('Name' => 'Folder2B', 'Value' => 'Archive/Folder2/Folder2A/Folder2B')
  12.                  )
  13.              )
  14.          )
  15.      )
  16. );


   
Pouvez vous m'aider résoudre se problème ?
 
J'espère avoir été assez claire dans mes explications, s'il y a besoin de précision ou si je me suis mal exprimé, veuillez m'en faire part, je me ferais un plaisir de vous répondre.

mood
Publicité
Posté le 02-02-2014 à 14:09:43  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Organisation Array

 

Sujets relatifs
[ PHP / Probleme ] PHP indisponible sur mon siteGestion de fichiers PHP
[RESOLU][ PHP / Probleme ] unexpected end of fileUn mauvais décompte de domaines, en PHP
[RUBY] intersection d'arrayRecupérer les liens d'une page en PHP
PHP - Traitement long sans blocage du navigateur ?Projet de fin d'année. (Java,Html,MySQL,PHP)
Récupération données d'un site PHPQuoi modifier du PHP.INI pour remettre mon blog sur pied
Plus de sujets relatifs à : [PHP] Organisation Array


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR