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
Rejoignez-nous