Transformer un tableau en objet [Résolu]

franco_se 150 Messages postés samedi 1 novembre 2003Date d'inscription 14 février 2009 Dernière intervention - 25 sept. 2008 à 21:00 - Dernière réponse : malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention
- 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
Afficher la suite 

10 réponses

Répondre au sujet
cs_TASIOT 20 Messages postés jeudi 18 septembre 2003Date d'inscription 26 septembre 2008 Dernière intervention - 25 sept. 2008 à 23:55
+3
Utile
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 <<
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_TASIOT
Teclis01 1423 Messages postés mardi 14 décembre 2004Date d'inscription 29 décembre 2012 Dernière intervention - 26 sept. 2008 à 12:31
0
Utile
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
Commenter la réponse de Teclis01
cs_TASIOT 20 Messages postés jeudi 18 septembre 2003Date d'inscription 26 septembre 2008 Dernière intervention - 26 sept. 2008 à 13:18
0
Utile
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
Commenter la réponse de cs_TASIOT
franco_se 150 Messages postés samedi 1 novembre 2003Date d'inscription 14 février 2009 Dernière intervention - 26 sept. 2008 à 17:22
0
Utile
merci,  c'est exactement ce dont j'avais besoin ! :D
Commenter la réponse de franco_se
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 26 sept. 2008 à 20:05
0
Utile
Hello,

sauf que ça existe : ArrayIterator, ou RecursiveArrayIterator, par exemple.
http://www.php.net/~helly/php/ext/spl/main.html
Commenter la réponse de malalam
cs_TASIOT 20 Messages postés jeudi 18 septembre 2003Date d'inscription 26 septembre 2008 Dernière intervention - 26 sept. 2008 à 20:12
0
Utile
Exact !!
Bon, ma fonction n'est pas vilaine non plus :)

Roland Dufour,
Visitez mon portfolio : >> http://portfolio.multiprog.net
Commenter la réponse de cs_TASIOT
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 26 sept. 2008 à 20:18
0
Utile
J'ai pas dit le contraire, elle est même très élégante.
Commenter la réponse de malalam
cs_TASIOT 20 Messages postés jeudi 18 septembre 2003Date d'inscription 26 septembre 2008 Dernière intervention - 26 sept. 2008 à 23:00
0
Utile
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
Commenter la réponse de cs_TASIOT
franco_se 150 Messages postés samedi 1 novembre 2003Date d'inscription 14 février 2009 Dernière intervention - 27 sept. 2008 à 00:02
0
Utile
Merci Malalam. Mais comment puis-je utiliser ArrayIterator ?
( pour ma part, je n'y connais rien en SPL , meme si je decouvre doucement ... )
Commenter la réponse de franco_se
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 27 sept. 2008 à 13:44
0
Utile
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.
Commenter la réponse de malalam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.