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] Création d'un tableau multi dimensionnel


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [Tableaux] Création d'un tableau multi dimensionnel
    Bonjour,

    Je bute sur un problème sur la création d'un tableau multidimensionnel à partir d'un tableau contenant les dimensions à créer

    Exemple : A partir de tab("a","b","c","d") je veux générer tab["a"]["b"]["c"]["d"]

    J'ai commmencé un premier script mais je bloque car il me manque une notion ou une base dans les pointeurs :
    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
     
    function returnArrMultiDim($arrIndex)
    	{
    		$nbDim =  count($arrIndex);
    		$i=0;
    		$tab = array();
    		while( $nbDim > 0 )
    		{
    			$nbDim--;
    			$p = $arrIndex[$nbDim];
    			$a = &$tab;
    			$a[$p] = array();
    			$tab = &$a[$p]; // apriori ca marche pas dans mon sens
    		}
    		return $tab;
    	}
     
    $arrIndex=array("a","b","c","d");
     
    $bar = returnArrMultiDim($arrIndex);

    Si quelqu'un peut m'aider je suis preneur

  2. #2
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    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
     
    	function returnArrMultiDim($arrIndex)
    	{
    		$arMulti = array();
     
    		foreach($arrIndex as $val)
    		{
    			$arMulti[$val] = array();
    		}
     
    		return $arMulti;
    	}
     
    	$array = array("a","b","c","d");
    	print_r(returnArrMultiDim($array));
    renvoit :

    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
    Array
    (
        [a] => Array
            (
            )
     
        [b] => Array
            (
            )
     
        [c] => Array
            (
            )
     
        [d] => Array
            (
            )
     
    )

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonjour,
    moi en lisant son message, j'ai cru qu'il voulait :

    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
    Array
    (
        [a] => Array
            (
                [b] => Array
                    (
                        [c] => Array
                            (
                                [d] => fin
                            )
     
                    )
     
            )
     
    )
    Parce qu'il y a toujours moyen de faire ça en utilisant la fonction eval().

    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
    <?php
     
      $tab = array('a', 'b', 'c', 'd');
      $ntab = array();
     
      $code = '$ntab';
     
      for ($i = 0; $i < count($tab); $i++) $code .= '["'.$tab[$i].'"]';
     
      $code .= ' = "fin";';
     
      eval($code);
     
      echo '<pre>';
      print_r($ntab);
      echo '</pre>';
     
    ?>
    Cordialement,
    DaRiaN.

  4. #4
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Après avoir rédigé ma réponse je me suis posé la question. ^^

  5. #5
    Membre régulier Avatar de daajack
    Inscrit en
    Octobre 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 97
    Points : 97
    Points
    97
    Par défaut
    Un peu violent le eval().

    Dans le cas du tableau multi-dimensionnel de Darian je préfererais :

    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
     
      function addArray($array, $index) {
     
        if (array_key_exists($index, $array)) {
     
          $newArray = Array($array[$index] => addArray($array, $index + 1));
        }
     
        return $newArray;
      }
     
      $arrIndex = Array('a','b','c','d');
      $arrMulti = addArray($arrIndex, 0);
     
      var_dump($arrMulti);
    Génère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    array(1) {
      ["a"]=>
      array(1) {
        ["b"]=>
        array(1) {
          ["c"]=>
          array(1) {
            ["d"]=>
            NULL
          }
        }
      }
    }
    C plus propre

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Pour des petits tableaux, ma méthode (fruit d'une seconde de réflexion) est la plus simple et la plus rapide.

    Pour des tableaux plus amples, la fonction eval() est totalement inacceptable car inadaptée pour ce genre d'écriture sans fin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tab['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w']['w'] = array();
    Cordialement,
    DaRiaN.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/12/2011, 13h12
  2. Réponses: 20
    Dernier message: 09/07/2008, 12h41
  3. Réponses: 5
    Dernier message: 04/10/2006, 18h49
  4. [Tableaux] Tableau multi dimensionnel
    Par gids01 dans le forum Langage
    Réponses: 7
    Dernier message: 02/10/2006, 16h18
  5. [Tableaux] tri sur un tableau multi-dimensionnel
    Par nicoaix dans le forum Langage
    Réponses: 1
    Dernier message: 12/04/2006, 21h23

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