Transformer un tableau en objet [Résolu]

Signaler
Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018
-
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
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

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

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 <<
Messages postés
1423
Date d'inscription
mardi 14 décembre 2004
Statut
Membre
Dernière intervention
29 décembre 2012
4
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
Messages postés
20
Date d'inscription
jeudi 18 septembre 2003
Statut
Membre
Dernière intervention
26 septembre 2008

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
Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018

merci,  c'est exactement ce dont j'avais besoin ! :D
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,

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

Exact !!
Bon, ma fonction n'est pas vilaine non plus :)

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

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
Messages postés
151
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 juillet 2018

Merci Malalam. Mais comment puis-je utiliser ArrayIterator ?
( pour ma part, je n'y connais rien en SPL , meme si je decouvre doucement ... )
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
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.