したがって、これに触れている他の回答は見たことがありませんが、@xdazz が近づいています。
環境を開始しましょう$obj
。デコードされた文字列のオブジェクト表記に相当します。
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)
}
文字列にアクセスしたい場合、以下は失敗することがわかっています。
php > echo $obj->1;
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `'{'' or `'$'' in php shell code on line 1
オブジェクト変数へのアクセス
次のようにアクセスできます。
php > echo $obj->{1};
1
これは、次のように言っているのと同じです:
php > echo $obj->{'1'};
1
配列変数へのアクセス
配列の問題は、次が空白を返すことです。これは型キャストの問題です。
php > echo $obj[1];
php >
型キャストを戻すと、オブジェクトに再びアクセスできるようになります。
php > $obj = (object) $obj;
php > echo $obj->{1};
1
上記を自動化する関数は次のとおりです。
function array_key($array, $key){
$obj = (object) $array;
return $obj->{$key};
}
使用例:
php > $obj = (array) $obj;
php > echo array_key($obj, 1);
1
php > echo array_key($obj, 2);
2