JeuWeb - Crée ton jeu par navigateur
[réglé] tableau dans une classe - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [réglé] tableau dans une classe (/showthread.php?tid=444)



[réglé] tableau dans une classe - Raoull - 16-11-2006

Bonjour,

je tourne en php4, je souhaite mettre un tableau dans une propriété de ma classe. comme ca :

Code PHP :
<?php 
Class perso {

// --- variables privées ---

var $id = 0; // id du perso

var $diplo[1] = 0;
var
$diplo[2] = 0;
var
$diplo[3] = 0;

(...)

pour ensuite appeller ce tableau comme ca :

Code PHP :
<?php 
$monperso
= new perso();

// set
$monperso->diplo[1] = 3;

// ou affichage
echo $monperso->diplo[1];

L'avantage serait de pouvoir faire une boucle FOR pour récuperer ou changer les valeurs du tableau.

Seulement quand j'essaie, j'ai :

Citation :Parse error: syntax error, unexpected '[', expecting ',' or ';' in /mnt/133/sdb/1/0/xparangon/inc/class_perso.inc.php on line 39

C'est justement le "[" de "var $diplo[1] = 0;" qui coince...

Alors d'ou vient le probleme ?
Est-ce possible d'utiliser un tableau dans les propriétés de ma classe ?
Si oui où est mon erreur ?

Merci


RE: tableau dans une classe - gtsoul - 16-11-2006

il faut déclarer les tableaux comme suit :
var $tab = array();


RE: tableau dans une classe - Raoull - 16-11-2006

Ok merci, mais j'arrive toujours pas à manipuler ce tableau au sein de ma classe.
C'est l a1ere fois que j'essaie, et je galère un peu...

La déclaration passe bien, mais impossible d'utiliser un élément du tableau. Les crochets coincent... je dois etre con...

je déclare donc le tableau dans les vars de la classe :
Code PHP :
<?php 
var $diplo = array();

quand je met, dans la déclaration de la classe, ou même dans la fonction constructeur :
Code PHP :
<?php 
$this
->diplo[1] = 22;
$this->diplo[2] = 43;

ca passe pas et j'ai :
Citation :Parse error: syntax error, unexpected T_VARIABLE, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/133/sdb/1/0/xparangon/inc/class_perso.inc.php on line 45

donc impossible d'assigner des valeurs par défaut, ou même de le remplir avec des valeurs de la BDD...


RE: tableau dans une classe - joshua - 16-11-2006

tu voudrais pas faire du

Code PHP :
<?php 
$this
->diplo->element1=0;
$this->diplo->element2=0;
$this->diplo->element3=0;

et passer en php5? autant faire du tout objet, c'est plus simple a gérer....


RE: tableau dans une classe - Raoull - 16-11-2006

mea culpa...
l'écriture à crochets fonctionne bien, mais il ne faut pas utiliser
Code PHP :
<?php 
$this
->diplo[1] = 22;
$this->diplo[2] = 43;
dans la partie déclaration, seulement dans les fonctions !
J'en avais oublié 1...

Tout marche donc, sauf que j'arrive plus à sauvegarder mon objet dans la bdd depuis... ca doit etre un oubli bete aussi...
Je marque "réglé". Merci gtsoul !


RE: [réglé] tableau dans une classe - Raoull - 16-11-2006

En fait je viens de comprendre un truc important, qui doit être dans la doc php d'ailleurs, mais j'ai pas verifié, c'est que quand on fait un "mysql_query(UPDATE)" sur une entrée d'une table, cette entrée n'est réellement modifié QUE si un des champs est différent.

Si tout est pareil, ca n'UPDATE rien, logique me direz vous, mais "mysql_affected_rows();" retourne 0 !
Qui n'est pas une erreur dans ce cas la... mais simplement qu'il n'y a eu aucun update effectif.
Logique aussi... mais faut le savoir pour pas chercher une erreur qui n'existe pas...