Page 1 sur 1

Vérifier les propriétés d'un objet stocké dans un tableau

Posté : 28 oct. 2022, 09:43
par PM67
Bonjour à tous,
Je débute en PHP et sur ce forum, veuillez donc m'excuser d'avance pour mes ignorances.
Mon contexte :
J'ai créé une class pour instancier un objet "Humain".
Dans un autre script PHP je crée mes objets dans un tableau $players.

Code : Tout sélectionner

for ($i=1; $i <= $players_nb; $i++) { $players[$i] = new Humain(('killer'.$i),rand(1,9),100,0,false,0,true); $players[$i] -> info(); } var_dump($players);
le résultat est satisfaisant :
array (size=9)
1 =>
object(Humain)[1]
private 'name' => string 'killer1' (length=7)
private 'force' => int 2
private 'sante' => int 100
private 'experience' => int 0
private 'combatState' => boolean false
private 'combatTeam' => int 0
private 'aliveState' => boolean true

Ma problématique :

Je souhaite maintenant interroger le tableau créér : $players

Code : Tout sélectionner

foreach($players as $key => $value) { var_dump($value); }
Ceci fonctionne bien, mais pas ceci :

Code : Tout sélectionner

foreach($players as $key => $value) { if ( [$value]->combatState == false && [$value]->aliveState == true ) { $playersAlive++; } }
Je n'arrive pas à interroger les propriétés de l'objet afin de le tester.
Si vous aviez un idée de la syntaxe correcte cela m'aiderai beaucoup pour finir mon TC.
D'avance merci.

Re: Vérifier les propriétés d'un objet stocké dans un tableau

Posté : 28 oct. 2022, 11:53
par Saian
Salut, je sais pas pourquoi tu as mis des crochets mais il n'en faut pas.
$value->combatState et $value->aliveState.
Les propriétés doivent être à minima protected voir public pour pouvoir y accéder ainsi. Tel que c'est en private tu ne pourras pas y accéder (peut être une erreur même), il faudrait sinon faire des getters.
Quand tu écris [$value], tu crées un tableau contenant un élément $value. Les tableaux ne possèdent pas de propriété combatState ou aliveState ce qui doit générer une erreur, si y a déjà pas une erreur de syntaxe.