次のような JSON があります。
{"internalArray": {"201": "A", "202": "B", "5": "C", "46": "D"},
"data": "ABCDEFG",
"data2": "TSXPIIF"}
次の PHP コードを使用してデコードします。
$jsonOutput = json_decode($output);
JSONデータから「internalArray」にアクセスしたいので、以下で参照します。
$internalArray = $jsonOutput->{'internalArray'};
$internalArray で var_dump を実行すると
object(stdClass)#4 (4)
{ ["201"]=> string(1) "A"
["202"]=> string(1) "B"
["5"]=> string(1) "C"
["46"]=> string(1) "D"
}
これを配列にキャストできることがわかったので、次のようにしました。
$internalArray = (array) $jsonOutput->{'internalArray'};
ただし、この配列を取得したので、次のような値を使用してアクセスすることはできません
$internalArray["202"], $internalArray["201"], etc.
キー経由でアクセスしようとすると、NULL が返されます。ただし、次のようなコードがある場合:
foreach ($internalArray as $key => $value)
{
echo $key . "," . $value;
}
「202、A」など、期待どおりの値が出力されます。
ただし、同じコードで次のように変更すると、
foreach ($internalArray as $key => $value)
{
echo $key . "," . $internalArray[$key];
}
うまくいきません!
キーを使用して $internalArray の値にアクセスできない理由を誰か説明できますか? ここで根本的に間違ったことをしていますか?