Dans le cas le plus simple, il est probablement suffisant de "couler" le tableau comme un objet :
$object = (object) $array;
Une autre option serait d'instancier une classe standard en tant que variable, et de boucler votre tableau tout en réassignant les valeurs :
$object = new stdClass();
foreach ($array as $key => $value)
{
$object->$key = $value;
}
Comme Edson Medina a souligné, une solution vraiment propre est d'utiliser le module intégré json_
fonctions :
$object = json_decode(json_encode($array), FALSE);
Cela convertit aussi (récursivement) tous vos sous-réseaux en objets, ce que vous pouvez ou non vouloir. Malheureusement, cette méthode a un coût de 2-3x performance atteinte par rapport à l'approche en boucle.
Attention ! (merci à Ultra pour le commentaire) :
json_decode sur différents environnements convertit les données UTF-8 de différentes manières. Je finis par obtenir les valeurs '240.00' localement et '240' en production - un vrai désastre. De plus, si la conversion échoue, la chaîne est retournée comme NULL.
4 votes
Quel type d'objet voulez-vous obtenir, précisément ? Ce que je veux dire, c'est : quels doivent être les attributs ?
0 votes
Dans une boucle, il devrait y avoir les deux car le statut est un seul tableau de données, donc les deux sont imprimés
3 votes
Je ne sais pas depuis quand, mais ça marche :
$a = (object)['hello' => 'world'];