Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/12/2010, 18h18   #1
Membre confirmé
 
Homme
Conseil - Consultant en systèmes d'information
Inscription : août 2008
Messages : 543
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Corse (Corse)

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

Informations forums :
Inscription : août 2008
Messages : 543
Points : 255
Points : 255
Par défaut Instancier un tableau associatif

Bonsoir,

je voudrais savoir comment instancier ceci par exemple :

Code :
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 :
$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
Marc22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 18h22   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 18h22   #3
Membre éprouvé
 
Avatar de guigo
 
Inscription : juin 2006
Messages : 606
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 606
Points : 479
Points : 479
Salut,
parcours ton tableau avec un foreach puis tu test a chaque fois si is_array()

...
Tu pourra alors lancer le traitement adéquat
guigo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 23h10   #4
Membre confirmé
 
Homme
Conseil - Consultant en systèmes d'information
Inscription : août 2008
Messages : 543
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Corse (Corse)

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

Informations forums :
Inscription : août 2008
Messages : 543
Points : 255
Points : 255
Bonsoir, je vous remercie pour ces précisions sur php.

parce que dans mon cas, je voudrais faire ceci :

Code :
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 :
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.
Marc22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 10h26   #5
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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 :
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2010, 23h34   #6
Membre confirmé
 
Homme
Conseil - Consultant en systèmes d'information
Inscription : août 2008
Messages : 543
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 25
Localisation : France, Corse (Corse)

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

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

Code :
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.
Marc22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/12/2010, 00h30   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
La je te le mets a la main mais c'est ça que tu veux obtenir ?
Code :
function add_equipe(Equipe $e){$this->equipe[$e->nom]['ville'] = $e->ville;}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h58.


 
 
 
 
Partenaires

Hébergement Web