2011-05-12 3 views
2

La syntaxe pour json_decode est:PHP json_decode: Object to Array Associatif

mixed json_decode (string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]]) 

Notez le 2ème paramètre $assoc qui est optionnel et par défaut à false. Lorsque ce paramètre est true, json_decode convertit des objets en tableaux associatifs.

Ma question est: Y at-il un cas où PAS voulez convertir un objet retourné dans un tableau associatif?

+1

@Adrian Il s'agit de PHP, pas de Javascript. – dkamins

+0

J'ajouterais des méthodes personnalisées pour permettre la sérialisation et la désérialisation (comme l'interface sérialisable) pour json. Cela permet une construction correcte des objets de json et json à partir d'objets. – Arend

+0

@dkamins Ah, stupide moi ... Merci de me corriger :) –

Répondre

2

Lorsque vous voulez converti en un objet ...

5

en php si une fonction retourne un tableau associatif, vous ne pouvez pas accéder à ses membres directement foo() [ « xxx »]. Cependant, s'il renvoie un objet, vous pouvez accéder aux membres sous la forme foo() -> xxx.

+0

Alors que ce n'est plus vrai, c'était quand la question a été postée (et quand 'json_decode()' a été écrit) donc c'est une bonne explication pour la valeur par défaut valeur. –

0

Personnellement, je demande toujours un tableau associatif et je trouve qu'il est plus facile de travailler avec que l'objet retourné quand $ assoc = false. Mais je dirais que la majorité du code d'autres personnes que j'ai vu (principalement diverses bibliothèques clientes de services Web) a utilisé json_decode avec $ assoc = false et des objets au lieu de tableaux associatifs. Je pense que c'est surtout une question de préférence, car je n'ai pas vu de raison particulière pour choisir un sens ou un autre.

Désolé pour la non-réponse :-)

0

Dans mon oppinion sa façon d'accentuer la différence entre une liste (en php exprimée par un tableau numérique) et une entité (l'objet). Cela pourrait être plus lisible, car on peut lire l'accesseur utilisé ([] ou ->) quel type de données est accédé.

-1

Vous devez transmettre un argument supplémentaire avec la valeur true. json_decode ($ p, true);