C'est assez pratique dans JS pour créer des objets tels que ceci: puis utilisez-les comme: p> y a-t-il de quelque chose comme Ceci en PHP sans déclarer des cours? P> p>
9 Réponses :
Il s'appelle des tableaux associatifs.
Exemple (Remarque: l'indentation est à des fins de présentation): p> Ceci est équivalent au code JavaScript suivant: P > comme alternative, vous pouvez utiliser le stdclass pré-déclaré. p> qui serait écrit en JavaScript comme suit: p> (Remarque: nouvel objet code> est identique à {} code> dans javascript) p> p>
(Nitpick) i> Les objets ne sont pas identiques que des tableaux associatifs, les deux premiers exemples ne sont pas équivalent i>. Utilisation de JSON_ENCODE sur le tableau ASTM produirait des objets JavaScript car il n'y a pas de tableaux ASTA en JavaScript, mais ce n'est pas vrai pour utiliser json_decode sur l'objet JavaScript. Par défaut, JSON_Decode retournera des objets pour cela.
Vous pouvez utiliser un objet STDCLASS ou une arrayObject inclus dans PHP (bien que ce dernier nécessite que vous avez installé SPL). Bien que, sauf si vous n'avez besoin d'accéder aux valeurs spécifiquement avec l'opérateur -> code>, c'est plus efficace pour simplement utiliser un tableau associatif. P>
Je pense que ce que vous cherchez est un tableau http://www.google.com/search?sourceid=chrome&e=utf-8&q=Keyed+Arrays P> p> associatif code>
test code> est une constante. Il devrait être $ test code>.
La chose la plus proche serait des matrices.
$test = array(
'foo' => array('bar' => 'hello world'),
'bar2' => 'hello world 2',
);
echo $test['foo']['bar'];
Eh bien, je sais sur les tableaux. Je demandais spécifiquement des objets comme ils sont plus flexibles, par exemple. Si vous voulez que vous puissiez ajouter des méthodes, pas seulement des données.
Comment les objets sont-ils plus flexibles dans ce cas? Vous ne pouvez pas ajouter des méthodes à un objet stdclass b> comme vous pouvez en JavaScript. Le plus proche que vous puissiez obtenir est de déclarer une propriété dans l'objet STDCLASS et d'attribuer un objet qui a les méthodes dont vous avez besoin. Vous pouvez aussi facilement cela avec des tableaux. La chose seulement b> qui diffère est la syntaxe utilisée pour obtenir ce dont vous avez besoin; Je ne vois aucune différence de flexibilité.
Techniquement, non. Toutefois, si vous créez un objet de données (c.-à-d. Aucune méthode), vous pouvez techniquement écrire une chaîne JSON et utiliser
$obj = json_decode($obj_string);
(Sidenote) i> Le OP est manquant des citations autour des propriétés, donc json_decode code> ne renvoie rien parce que c'est invalide JSON.
La seule raison de faire c'est si vous souhaitez transmettre des données à une fonction JavaScript avec JSON. Dans ce cas, utilisez json_encode sur le tableau. Sinon, gardez-le comme une matrice, car il n'y a pas de raison de le coder, puis de le décoder, alors cela ressemble à JavaScript. P>
stdclass vous permet de créer (essentiellement) des objets sans faille. Par exemple: comme indiqué ici, le moyen le plus rapide de créer un objet STDCLASS est de lancer un tableau associatif. Pour plusieurs niveaux, vous faites simplement la même chose à nouveau à l'intérieur comme suit: p> Une autre méthode consiste à convertir le tableau associatif en un objet ensuite avec une fonction récursive. Voici un exemple. P> function toObject(array $array) {
$array = (object) $array;
foreach ($array as &$value)
if (is_array($value))
$value = toObject($value);
return $array;
}
// usage:
$array = // some big hierarchical associative array...
$array = toObject($array);
Essayez de cette façon: https://github.com/ptrofimov/jslikeObject p>
Auteur Mise en œuvre d'objets JS-SIMS, vous pouvez même accéder aux propriétés des fonctions via ce pointeur $. P>
Mais peut-être que ce n'est pas si bon d'utiliser de tels objets au lieu de ceux habituels. P>
$a = array(
'a'=> 123,
'b'=> 334,
'c'=> 7853
);
echo json_encode($a);
This will be the result: {"a":123,"b":334,"c":7853}