Transformer un tableau en objet

Résolu
franco_se
Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018
- 25 sept. 2008 à 21:00
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
- 27 sept. 2008 à 13:44
Hello

Je souhaiterai transformer un tableau multidimensionnel en objet.
Existe-t-il une fonction  ( a la maniere de mysql_fetch_object ) ?
Ou faut-il en coder une ? ...

merci

10 réponses

cs_TASIOT
Messages postés
20
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
26 septembre 2008

25 sept. 2008 à 23:55
Bonsoir,

Sauf erreur de ma part, aucune fonction de ce genre n'existe. Cependant, en voici une qui te ferais ce que tu demandes :

Fonction :

function array2object(array $array){
    $object = new stdClass();
    foreach ($array as $key => $val){
        if (is_array($val)){
            $object->$key = array2Object($val);
        } else {
            $object->$key = $val;
        }
    }
    return $object;
}

Exemple d'utilisation :

$config = array(
    'local' => array(
        'showErrors' => true,
        'sendMails' => false
    ),
    'prod' => array(
        'showErrors' => false,
        'sendMails' => true
    )
);
$configObj = array2object($config);
var_dump($configObj->local->showErrors);

Roland Dufour,
Visitez mon portfolio : >> http://portfolio.multiprog.net <<
3
Teclis01
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
26 sept. 2008 à 12:31
json_encode

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
cs_TASIOT
Messages postés
20
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
26 septembre 2008

26 sept. 2008 à 13:18
Bonjour,

Si tu utilises json_encode, tu obtiendras une chaine de caractères exploitable par Javascript via eval(). Cependant, si tu veux bien exploiter comme un objet ton tableau php, en PHP, ma fonction array2object est la solution.

Roland Dufour,
Visitez mon portfolio : >> http://portfolio.multiprog.net
0
franco_se
Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018
2
26 sept. 2008 à 17:22
merci,  c'est exactement ce dont j'avais besoin ! :D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
26 sept. 2008 à 20:05
Hello,

sauf que ça existe : ArrayIterator, ou RecursiveArrayIterator, par exemple.
http://www.php.net/~helly/php/ext/spl/main.html
0
cs_TASIOT
Messages postés
20
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
26 septembre 2008

26 sept. 2008 à 20:12
Exact !!
Bon, ma fonction n'est pas vilaine non plus :)

Roland Dufour,
Visitez mon portfolio : >> http://portfolio.multiprog.net
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
26 sept. 2008 à 20:18
J'ai pas dit le contraire, elle est même très élégante.
0
cs_TASIOT
Messages postés
20
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
26 septembre 2008

26 sept. 2008 à 23:00
Merci beaucoup ^^. Je dois t'avouer que malgré mon niveau avancé sur php, je connais mal les fonctions SPL. Ta connaissance de la SPL m'impressionne, tout comme le nombre de tes messages sur le réseau PHPCS. J'ai connu le forum en 2003, mais il est vrai que c'est seulement aujourd'hui où j'ai les connaissances pour renseigner les autres que je reviens faire un tour sur ce forum :).

Bonne soirée à toi malalam et à tous les autres développeurs bien entendus !!

Roland Dufour,
Visitez mon portfolio : >> http://portfolio.multiprog.net
0
franco_se
Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018
2
27 sept. 2008 à 00:02
Merci Malalam. Mais comment puis-je utiliser ArrayIterator ?
( pour ma part, je n'y connais rien en SPL , meme si je decouvre doucement ... )
0
malalam
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
2 mars 2010
25
27 sept. 2008 à 13:44
Attention, un simple ArrayIterator ne te permettra pas d'appeler les membres du tableau comme les membres d'un objet. C'est juste un itérateur. Mais ça s'étend facilement pour en faire ce que tu veux.
Voir aussi ArrayAccess.
C'est trop long à expliquer ici. Sur la page que j'ai donnée, en bas, tu trouveras des liens vers des tutos sur la SPL. Et bcp de mes codes utilisent la SPL, ainsi que ceux de Neigedhiver.
0