[php] tableau d'objet possible ou pas?

tableau d'objet possible ou pas? [php] - PHP - Programmation

Marsh Posté le 31-07-2003 à 15:44:01    

Salut tt le monde
 
je voulais savoir si, commen en C/C++ (et sans doute autres) il est possible de créer des tableau d'objet.
 
par exemple si g un objet toto, en c je ferais: toto tableau[5];
 
alors possible ou pas en php?

Reply

Marsh Posté le 31-07-2003 à 15:44:01   

Reply

Marsh Posté le 31-07-2003 à 15:58:40    

Da_S_Monk a écrit :

Salut tt le monde
 
je voulais savoir si, commen en C/C++ (et sans doute autres) il est possible de créer des tableau d'objet.
 
par exemple si g un objet toto, en c je ferais: toto tableau[5];
 
alors possible ou pas en php?

En php, tu ferais
tableau[5]= new toto();
Et même mieux que ça, chaque case du tableau est autonome dans le type de donnée, tu peux très bien y mettre une classe différente dans chaque case et même des nombres et des chaines de caractères  même si c'est pas conseillé du tout.

Reply

Marsh Posté le 31-07-2003 à 16:23:32    

Citation :

tu peux très bien y mettre une classe différente dans chaque case et même des nombres et des chaines de caractères


 
en gros donc je peux faire comme ca:
tab[0]= new toto();
tab[1]= new tata();
tab[2]= $int;
etc...
?
(meme si c pas beau :-))

Reply

Marsh Posté le 31-07-2003 à 16:54:07    

oui !
 
Et même bien sur :
 

$tabA['titi'] = "tutu";
 
$tabB[1]= $tabA;
$tabB[2]= $tabB;
 
$tabA['x'] = $tabB;
 
echo $tabA['titi'] . '<br>';
echo $tabB[1]['titi'] . '<br>';
echo $tabB[2][1]['titi'] . '<br>';
echo $tabA['x'][2][1]['titi'] . '<br>';


SI SI, çà marche, mais là c'est vraiement chaud : http://www.surleau.com/test/tablos.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 31-07-2003 à 17:05:27    

Encore plus fort !
 
Dans l'exemple d'avant, $tabB = $tabA, php fait une copie de tableau. La modification de $tabB[1]['titi'] n'impacte pas $tabA['titi'].
 
Mais si on fait une affectation par référence, là, il faut faire attention à ne pas tourner en rond :
 

$tabA['titi'] = "tutu";
 
$tabB[1]= &$tabA;
$tabB[2]= &$tabB;
 
$tabA['x'] = &$tabB;
 
echo "tabA['titi'] = " . $tabA['titi'] . '<br>';
echo "tabB[1]['titi'] = " . $tabB[1]['titi'] . '<br>';
echo "tabB[2][1]['titi'] = " . $tabB[2][1]['titi'] . '<br>';
echo "tabA['x'][2][1]['titi'] = " . $tabA['x'][2][1]['titi'] . '<br>';
echo "tabB[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][1]['titi'] = " . $tabB[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][1]['titi'] . '<br>';
echo "tabA['x'][2][2][2][2][2][1]['titi'] = " . $tabA['x'][2][2][2][2][2][1]['titi'] . '<br>';
echo "tabA['x'][2][1]['x'][2][1]['x'][2][2][2][1]['titi'] = " . $tabA['x'][2][1]['x'][2][1]['x'][2][2][2][1]['titi'] . '<br>';
 
$tabA['titi'] = "Nouvelle valeur !";
echo('<hr>');
 
echo "tabA['titi'] = " . $tabA['titi'] . '<br>';
echo "tabB[1]['titi'] = " . $tabB[1]['titi'] . '<br>';
echo "tabB[2][1]['titi'] = " . $tabB[2][1]['titi'] . '<br>';
echo "tabA['x'][2][1]['titi'] = " . $tabA['x'][2][1]['titi'] . '<br>';
echo "tabB[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][1]['titi'] = " . $tabB[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][1]['titi'] . '<br>';
echo "tabA['x'][2][2][2][2][2][1]['titi'] = " . $tabA['x'][2][2][2][2][2][1]['titi'] . '<br>';
echo "tabA['x'][2][1]['x'][2][1]['x'][2][2][2][1]['titi'] = " . $tabA['x'][2][1]['x'][2][1]['x'][2][2][2][1]['titi'] . '<br>';


 
Exmple en live : http://www.surleau.com/test/tablos_r.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 31-07-2003 à 17:08:40    

Da_S_Monk a écrit :

Citation :

tu peux très bien y mettre une classe différente dans chaque case et même des nombres et des chaines de caractères


 
en gros donc je peux faire comme ca:
tab[0]= new toto();
tab[1]= new tata();
tab[2]= $int;
etc...
?
(meme si c pas beau :-))

A peu près ça. :)
Faut faire $tab[0]= new toto();
J'ai oublié le $ tout a l'heure, c'est lui qui indique que c'est une variable.
$$var par exemple, veut dire la variable dont le nom est contenu dans la variable $var.
$var() veut dire quand a elle : la fonction dont le nom est contenue dans la variable $var.
Et si tu veux que le nom de la variable soit donnée par la foncction, il faut faire ${fonction()} les {} indique que ce qu'est à l'intérieur doit être traité avant le $ .
 
C'est quand même un peu plus puissant que le C de ce point de vu là il me semble. ;)
 
Sur mon site, j'utilises un tableau d'objet pour charger les objets ayant un traitement a faire ou des données a affiché sur une page donné.
Mais au niveau du tableau, je fais $tab[objet] = new object(); ce qui me permet de savoir facilement si j'ai déjà initialisé une case du tableau avec tel objet. ;)

Reply

Marsh Posté le 31-07-2003 à 17:58:20    

Merci bcp por vos reponses! je kiff c trop fort :-)
 
Mara t'as bien tripper  :pt1cable:

Reply

Marsh Posté le 31-07-2003 à 20:39:37    

respect mara :jap:


Message édité par Profil supprimé le 31-07-2003 à 20:39:47
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed