JeuWeb - Crée ton jeu par navigateur
StdClass object et Array ? - 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 : StdClass object et Array ? (/showthread.php?tid=5262)



StdClass object et Array ? - Dexyne - 21-02-2011

Donc voilà j'ai essayer de chercher sur Google et un peu ici mais sans grand succès.

J'aimerais donc qu'on m'explique ce qu'est stdClass (j'ai bien lu quelques trucs mais si ça peut être encore plus claire ça serait pas mal).

Mon soucis c'est que je récupère quelque chose comme ceci :

Array
(
[0] => stdClass Object
(
[id_map] => 1
[nom_map] => Mana Ridge (ville)
)

[1] => stdClass Object
(
[id_map] => 2
[nom_map] => Snow Frost Trail
)
)

mais je ne sais pas comment récupérer le tableau 0 ou 1 en particulier ou une des valeurs de ce tableau.

Y'a-t-il un intérêt à utiliser ça ? (j'ai lu des trucs qui disaient que non bien que ça à l'air de servir aussi donc ça m'embrouille).
Est-il mieux que j'utilise un tableau non objet sinon ?

J'ai obtenu ceci via la fonction result() de CodeIgniter après une requête sql.


RE: StdClass object et Array ? - djidi - 21-02-2011

J'ai aussi eu le cas du stdClass en récupérant des données d'un site externe.
Je ne sais pas l'utilité mais si tu veux utiliser le tableau comme un array classique, tu peux effectuer un transtypage :

$array = (array) $std;



RE: StdClass object et Array ? - atra27 - 21-02-2011

Un array est un tableau,
Un stdClass Object est un objet.

Donc pour acceder a Mana Ridge (ville) tu dois faire:*
$var[0]->nom_map;

Pour l'interet, par rapport a un array associatif a plusieurs dimensions, y en as pas d'autres!
C'est juste une utilisation différente et peut étre plus claire pour les habitués de la POO

Codeigniter retourne un résultat sous forme d'object, mais il existe des méthodes similaires qui retournent des array! (souvent le même nom avec _array si mes souvenirs sont bons)
Check la documentation Wink


RE: StdClass object et Array ? - Ieyasu - 21-02-2011

(21-02-2011, 03:30 AM)Dexyne a écrit : Donc voilà j'ai essayer de chercher sur Google et un peu ici mais sans grand succès.

J'aimerais donc qu'on m'explique ce qu'est stdClass (j'ai bien lu quelques trucs mais si ça peut être encore plus claire ça serait pas mal).

Mon soucis c'est que je récupère quelque chose comme ceci :

Array
(
[0] => stdClass Object
(
[id_map] => 1
[nom_map] => Mana Ridge (ville)
)

[1] => stdClass Object
(
[id_map] => 2
[nom_map] => Snow Frost Trail
)
)

mais je ne sais pas comment récupérer le tableau 0 ou 1 en particulier ou une des valeurs de ce tableau.

Y'a-t-il un intérêt à utiliser ça ? (j'ai lu des trucs qui disaient que non bien que ça à l'air de servir aussi donc ça m'embrouille).
Est-il mieux que j'utilise un tableau non objet sinon ?

J'ai obtenu ceci via la fonction result() de CodeIgniter après une requête sql.

StdClass permet de transformer "ce que tu veux" en objet.
Ici, un array tridimensionnel : U tableau classique, contenant des tableaux associatifs clefs->valeur (les objets e questions).


Tu peux accéder au contenu du premier tableau avec une structure foreach par exemple, et ensuite accéder aux objets stdClass via l'opérateur "->" (à priori).

Ce pourrait être utile par exemple dans la mesure ou tu aurais créé une classe prenant en paramètre un "objet", par exemple, mais das une utilisation classique, je pense que l'intérêt reste moindre sinon nul.

Mais ça n'est que mon humble avis, je me trompe peut-être.

Edit : Grilled !

Informations très pertinentes au dessus, facilité d'utilisation pour les structures manipulant des objets, et possibilité de transtypage das ce cas ci, puisque php permet pas mal de liberté sur les types autant en profiter si tu es plus à ton aise avec un tableau classique.


RE: StdClass object et Array ? - niahoo - 21-02-2011

stcClass veut dire classe standard, et c'est toujours plus rapide d'utiliser l'opérateur flèche que de s'emmerder avec des crochets et des apostrophes, donc c'est très utile =D


RE: StdClass object et Array ? - Sephi-Chan - 21-02-2011

Je trouve que retourner des objets stdClass n'est pas une bonne chose.
À l'évidence, les données citées sont propres à une map, et devraient de ce fait être des instances de la classe Map (et avec des attributs qui ne portent pas cette information, juste id et name).
Les tableaux sont très utiles (indispensables, en fait), même quand on utilise des objets.


Sephi-Chan


RE: StdClass object et Array ? - Dexyne - 21-02-2011

Merci pour vos réponses Smile.

En faite j'avais lu que c'était plus lent en utilisant les tableaux objets qu'un tableau normal (et de même avec un while + fetch) enfin après j'ai peut-être pas tout compris.
Il me semble pourtant avoir essayer cette syntaxe $var[0]->nom_map; mais je sais pas si ça vient de moi mais ça fonctionnait pas, enfin je re-testerait.

J'ai vu la doc de CodeIgniter en faite avant de posté pour voir comment le result() fonctionnait et j'ai vu qu'il était possible d'avoir un array non objet mais je voulais m'informer sur les tableaux objet avant et le stdClass, et sinon en effet j'avais lu que stdClass étant une classe standard mais après ça ne m'aidait pas vraiment sur son utilisation de savoir ça (ça se voit un peut ce que ça veux dire aussi ^^).

Edit: ça fonctionne j'utilisais la mauvaise variable xD mais merci de votre savoir Smile.