J'ai un problème pour convertir un objet stdClass en tableau. J'ai essayé de cette façon:
return (array) $booking;
ou
return (array) json_decode($booking,true);
ou
return (array) json_decode($booking);
Le tableau avant la distribution est plein avec un enregistrement, après mon essai de distribution, il est vide. Comment le convertir / le convertir sans supprimer ses lignes?
tableau avant transtypage:
array(1) { [0]=> object(stdClass)#23 (36) { ["id"]=> string(1) "2" ["name"]=> string(0) "" ["code"]=> string(5) "56/13" } }
après que le plâtre est vide NULL si j'essaye de faire un var_dump($booking);
J'ai également essayé cette fonction mais toujours vide:
public function objectToArray($d) {
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
}
else {
// Return array
return $d;
}
}
return
. Et courirjson_decode
sur un tableau me semble assez désespéré, probablement assis trop longtemps devant l'ordinateur et il est maintenant temps de faire une pause?var_dump($booking);
sortiesNULL
?var_dump()
avant le casting. Ne réutilisez pas le même nom de variable btw. s'il y$booking
avait quelque chose avant le casting, ce devrait toujours être ce quelque chose avant le casting et pas quelque chose de différent après. Différence entre les variables d'entrée et de traitement, sinon vous rencontrez des problèmes que vous ne comprenez plus ce que vous y faites.Réponses:
La méthode one-liner paresseuse
Vous pouvez le faire dans une seule ligne en utilisant les méthodes JSON si vous êtes prêt à perdre un tout petit peu de performances (bien que certains aient signalé qu'il était plus rapide que d'itérer récursivement à travers les objets - probablement parce que PHP est lent à appeler les fonctions ). " Mais je l'ai déjà fait ", dites-vous. Pas exactement - vous l'avez utilisé
json_decode
sur le tableau, mais vous devez d'abord le coderjson_encode
.Exigences
Les méthodes
json_encode
etjson_decode
. Celles-ci sont automatiquement regroupées en PHP 5.2.0 et versions ultérieures. Si vous utilisez une version plus ancienne, il y a aussi une bibliothèque PECL (cela dit, dans ce cas, vous devriez vraiment mettre à jour votre installation PHP. Le support de 5.1 a cessé en 2006.)Conversion d'un
array
/stdClass
->stdClass
Conversion d'un
array
/stdClass
->array
Le manuel spécifie le deuxième argument de
json_decode
:Par conséquent, la ligne suivante convertira l'intégralité de votre objet en un tableau:
la source
(array) $booking;
dans unvar_dump
estNULL
(comme écrit par OP), devinez ce que ce code renverra?NULL
après l' avoir converti en tableau. Je pense que OP signifie que c'estNULL
après utilisation,json_decode($array)
ce qui est logique selon le manuel . NULL est retourné si le json ne peut pas être décodéjson_decode()
sur un tableau.json_decode
doit être utilisé sur une chaîne JSON. Par conséquent, si nous le codons d'abord sous forme de chaîne JSON (json_encode
), puis le décodons (à l'aide de notre chaîne JSON), cela fonctionne correctement.utilisez cette fonction pour récupérer un tableau standard du type que vous recherchez ...
la source
Puisqu'il s'agit d'un tableau avant de le lancer, le lancer n'a aucun sens.
Vous voudrez peut-être une distribution récursive, qui ressemblerait à ceci:
Usage:
Résultat avant:
Résultat après:
Remarque:
Testé et fonctionnant avec des tableaux complexes où un objet stdClass peut contenir d'autres objets stdClass.
la source
Veuillez utiliser la fonction php suivante pour convertir php stdClass en tableau
la source
Cette fonction a fonctionné pour moi:
Référence: http://carlofontanos.com/convert-stdclass-object-to-array-in-php/
la source
Utilisez la fonctionnalité de conversion de type intégrée, tapez simplement
la source
Juste googlé, et trouvé ici une fonction pratique qui est utile pour convertir récursivement l'objet stdClass en tableau.
EDIT : J'ai mis à jour cette réponse avec du contenu provenant d'une source liée (qui est également modifié maintenant), merci à mason81 de m'avoir suggéré.
la source
Voici une version de la réponse de Carlo qui peut être utilisée en classe:
la source
Le code suivant lira tous les e-mails et imprimera le sujet, le corps et la date.
Cela génère les éléments suivants:
Ayant eu du mal avec diverses suggestions, j'ai utilisé des essais et des erreurs pour trouver cette solution. J'espère que ça aide.
la source
Voici la meilleure fonction Object to Array que j'ai - fonctionne récursivement:
$ clean_array = object_to_array ($ object_data_here);
la source