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 :

Tableaux Multidimensionnels en PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de shark1308
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Par défaut Tableaux Multidimensionnels en PHP
    Salut à tous,

    Encore junior en PHP, je bloque sur une fonction que j'ai faite et qui doit me générer un tableau Multidimensionnel pour par la suite me permettre de créer un Organigramme hiérarchique d'entreprise.

    - j'arrive bien à construire mon tableau sur 3 dimensions hierarchique mais je bloque pour parcourir un 4 étage en dessous.

    2eme ptit problème :

    - lorsque j'essaie de mettre mon id superviseur en cle et les subalterns en valeurs, il s'arrete à la premiere valeur et ne boucle pas sur le reste.

    voici ma fonction qui me genere mon array :
    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
     
    public function getHierarchicArray()
    	{
    		$subalterns = $this->mainUser->getSubalterns();
    		foreach($subalterns as $idChief )
    		{
    			$aSubaltern = self::$_users->findFirst(array('idUser' => $idChief));
    			foreach($aSubaltern->getSubalterns() as $key => $idSupervisor)
    			{	
    				$aSupervisor = self::$_users->findFirst(array('idUser' => $idSupervisor));
    				if($aSupervisor->isSupervisor())
    				{
    					$subaltern = $aSupervisor->getSubalterns();
    					foreach($subaltern as $key=>$idSub)
    					{
    						$this->hierarchicArray[$idChief][$idSupervisor] = $subaltern;						
    					}
    				}
    				else
    				{
    					$this->hierarchicArray[$idChief][$idSupervisor] = count($aSupervisor->getSubalterns());		
    				}
    			}
    		}
    		return $this->hierarchicArray;
    	}

    et voici le retour de ma fonction :
    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
     
    Array
    (
        [10] => Array
            (
                [100] => 0
                [108] => Array
                    (
                        [0] => 339
                        [1] => 209
                    )
     
                [227] => 0
                [1] => Array
                    (
                        [0] => 375
                        [1] => 236
                    )
     
                [365] => Array
                    (
                        [0] => 42
                    )
     
                [956] => 0
                [128] => 0
            )
     
        [665] => Array
            (
                [104] => 0
                [206] => 0
                [307] => 0
                [331] => 0
                [348] => 0
            )
     
     
    )
    je pense que je dois passer à côté de quelque chose mais là jsuis un peu coincé...
    Merci de votre aide.

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 59
    Par défaut
    Salut, j'ai pas lu le code, au delà de 2 boucle imbriquées mon cerveau ne suis plus .
    Je te suggère de tenté quelque chose récursif c'est peut être plus simple...

  3. #3
    Membre averti Avatar de shark1308
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Par défaut
    Je te remercie, je suis en train d'ajouter une méthode récursive à ma fonction principale, pas trop l'habitude des manipulations de tableaux avec autant de dimensions, je me perd un peu, on dira que ça forge l'expérience...

  4. #4
    Membre averti Avatar de shark1308
    Homme Profil pro
    Architecte technique
    Inscrit en
    Janvier 2010
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13
    Par défaut
    ça va beaucoup mieux avec la récursivité.

    au final ça donne a peu près ça :

    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
     
    public function getHierarchicTree()
    	{
    		$subalterns = $this->mainUser->getSubalterns();
    		foreach($subalterns as $aUser)
    		{
    			$this->testArray[$aUser] = $this->generateHierarchicArray(self::$_users->findFirst(array('idUser'=>$aUser)));
    		}
    		return $this->testArray;
    	}
    	//tested OK
    	private function generateHierarchicArray($aUser, $tmpArray = Array())
    	{
     
    		foreach($aUser->getSubalterns() as $idSubaltern)
    		{
    			$aSupervisor = self::$_users->findFirst(array('idUser' => $idSubaltern));
    			if($aSupervisor->isSupervisor())
    			{
    				$tmpArray[$idSubaltern] = $this->generateHierarchicArray($aSupervisor);
    			}
    			else
    			{
    				$tmpArray[$idSubaltern] = count($aSupervisor->getSubalterns());	
    			}
    		}
    		return $tmpArray;
    	}

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

Discussions similaires

  1. [Tableaux] imprimer en php
    Par ph_anrys dans le forum Langage
    Réponses: 3
    Dernier message: 21/03/2006, 15h40
  2. [Tableaux] comparaison numerique php
    Par kamel_leon dans le forum Langage
    Réponses: 8
    Dernier message: 08/03/2006, 14h35
  3. [Tableaux] debutant en php
    Par herve_911 dans le forum Langage
    Réponses: 8
    Dernier message: 22/02/2006, 02h19
  4. [Tableaux] tableau en php
    Par fulgaro dans le forum Langage
    Réponses: 1
    Dernier message: 09/02/2006, 16h35
  5. Réponses: 5
    Dernier message: 24/12/2005, 15h40

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