Por lo tanto, no he visto ningún otro las respuestas tocan esto, pero @xdazz estuvo cerca.
Vamos a empezar nuestro entorno, $obj
es igual a la notación de objetos de una cadena decodificada:
php > $obj = json_decode('{"1":1,"2":2}');
php > print_r($obj);
stdClass Object
(
[1] => 1
[2] => 2
)
php > var_dump($obj);
object(stdClass)#1 (2) {
["1"]=>
int(1)
["2"]=>
int(2)
}
Si desea acceder a las cuerdas, sabemos lo siguiente fallará:
php > echo $obj->1;
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `'{'' or `'$'' in php shell code on line 1
Acceso las variables de objeto
Puede acceder a ella como tal:
php > echo $obj->{1};
1
cual es lo mismo que decir:
php > echo $obj->{'1'};
1
Acceso a las variables de matriz
El problema con las matrices es que la siguiente declaración en blanco, que es el problema con el encasillamiento.
php > echo $obj[1];
php >
Si encasillado de nuevo, el objeto es una vez más accesible:
php > $obj = (object) $obj;
php > echo $obj->{1};
1
Aquí es una función que automatizará lo anterior para usted: el uso
function array_key($array, $key){
$obj = (object) $array;
return $obj->{$key};
}
Ejemplo:
php > $obj = (array) $obj;
php > echo array_key($obj, 1);
1
php > echo array_key($obj, 2);
2
dan la reputación 100 antes de que está caducado. –
@JosuaMarcelChrisano: hay 6 días completos antes de que caduque la recompensa. La recompensa recién comenzó ayer. Dale un descanso. Además, no es necesario que se lo recuerde de nuevo 6 días después; el sistema lo hará. – BoltClock