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 :

Instancier un tableau associatif


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut Instancier un tableau associatif
    Bonsoir,

    je voudrais savoir comment instancier ceci par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $fruits = array (
        "fruits"  => array("a" => "orange", "b" => "banana", "c" => "apple"),
        "numbers" => array(1, 2, 3, 4, 5, 6),
        "holes"   => array("first", 5 => "second", "third")
    );?>
    Je voudrais faire comprendre au compilateur que mon array sera un tableau de tableaux.

    dans un pseudo langage, ça ressemble un peu à ça ce que je recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $fruits=(char=>array(char=>$value));
    Parce qu'au départ je ne sais pas quelle clé je vais entrer. Et comme je fais faire des array_push(), je voudrais qu'ils sachent que le premier élément est la clé d'un autre tableau.

    Merci

  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
    Les variables ne s'instancient pas en PHP.
    PHP n'a pas besoin de connaitre ce que sera ton tableau au final.

    array_push() est par ailleurs déconseillé au profit de la notation $tableau[] = $valeur

  3. #3
    Membre confirmé Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Points : 576
    Points
    576
    Par défaut
    Salut,
    parcours ton tableau avec un foreach puis tu test a chaque fois si is_array()

    ...
    Tu pourra alors lancer le traitement adéquat

  4. #4
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Bonsoir, je vous remercie pour ces précisions sur php.

    parce que dans mon cas, je voudrais faire ceci :

    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
    class Equipe{
    		private $nom,$club;
     
    		function __construct($nom, $club){$this->nom=$nom;$this->club=$club;}
    		function getNom(){return $this->nom;}
    }
     
    class Championnat{
    		private $nom,$pays;
    		private $equipe=array(); // ICI
     
    		function __construct($nom, $pays){
    			$this->nom=$nom;
    			$this->pays=$pays;}
     
    		function nom(){return $this->nom;}
    		function pays(){return $this->pays;}
     
    		function add_equipe(Equipe $e){array_push($this->equipe,$e);}	
     
    		function getEquipe($eq){return $this->equipe[];}}
     
    // création de deux objets Equipe
    $marseille=new Equipe("Marseille", "OM");
    $paris=new Equipe("Paris", "PSG");
     
    // on crée un objet Championnat
    $championnat_ligue1=new Championnat("Ligue1","France");
     
    // ajout des objets equipe dans le championnat
    $championnat_ligue1->add_equipe($marseille);
    $championnat_ligue1->add_equipe($paris);
     
    // on cherche une information sur l'une d'entre elle
    $a=$championnat_ligue1->getEquipe($paris);
     
    echo $a[0]->getNom(); //test
    Mon problème, c'est que le résultat de ce code me donnera "Marseille", je comprends, ça cherche dans la liste des équipes que j'ai entré dans le championnat, et comme la première équipe à avoir été entrée est Marseille, l'indice 0 lui correspond.

    Donc c'est pour ça que je voulais créer un tableau associatif là où j'ai marqué "ICI", et un tableau de tableau.

    Parce que là si je veux accéder à une information de l'une des deux équipes, je dois savoir à quel indice numérique elles correspondent.

    Donc en effet je passe par un foreach et je teste si la valeur est égale à l'équipe que je recherche, mais j'essayais d'optimiser le truc. Sachant que je débute dans la POO concernant PHP.

    Moi je voudrais pouvoir entrer leur nom et tomber sur leurs informations avec un tableau, quelque chose qui ressemblerait à ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array("nomEquipe"->array("info1", "info2", ...))
    C'est pour ça qu'au début je voulais instancier et maintenant que je sais que c'est pas possible, faut que je trouve comment faire autrement.

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est déjà le cas dans ton code, affiche ça :
    Ma remarque concernant array_push c'est qu'on utilise cette notation à la place :

  6. #6
    Membre actif
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2008
    Messages
    557
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 557
    Points : 286
    Points
    286
    Par défaut
    Citation Envoyé par sabotage Voir le message
    C'est déjà le cas dans ton code, affiche ça :
    J'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(2) { [0]=> object(Equipe)#1 (2) { ["nom":"Equipe":private]=> string(9) "Marseille" ["club":"Equipe":private]=> string(2) "OM" } [1]=> object(Equipe)#2 (2) { ["nom":"Equipe":private]=> string(5) "Paris" ["club":"Equipe":private]=> string(3) "PSG" } }
    D'accord pour array_push j'essaierai de plus m'en servir.

  7. #7
    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
    La je te le mets a la main mais c'est ça que tu veux obtenir ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function add_equipe(Equipe $e){$this->equipe[$e->nom]['ville'] = $e->ville;}

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

Discussions similaires

  1. loop sur tableau associatif
    Par Plawi dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/02/2005, 11h29
  2. tableau associatif en asp ?
    Par bigsister dans le forum ASP
    Réponses: 5
    Dernier message: 26/01/2005, 16h47
  3. asp tableau associatif
    Par rfernandez dans le forum ASP
    Réponses: 6
    Dernier message: 19/12/2003, 18h58
  4. [langage] TRI TABLEAU ASSOCIATIF
    Par proner dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2003, 16h38
  5. [langage] Réinitialiser un tableau associatif.
    Par totox17 dans le forum Langage
    Réponses: 2
    Dernier message: 28/01/2003, 16h29

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