0

このjsonをphp配列に変換してから、アイテムを循環して、jsonデコードを単独で使用して試したそれぞれの列に配置する必要がありますが、返されるのはテキスト配列だけです。リクエストが正常に機能し、次のようになります。出力:

 [{"roomType":"Single rooms","roomTypeCode":"SB"},{"roomType":"Double rooms","roomTypeCode":"DB"},{"roomType":"Twin rooms","roomTypeCode":"TB"},{"roomType":"Triple rooms","roomTypeCode":"TR"},{"roomType":"Suites","roomTypeCode":"S"},{"roomType":"Non-smoking rooms","roomTypeCode":"NS"},{"roomType":"Quad rooms","roomTypeCode":"Q"},{"roomType":"Twin for sole use","roomTypeCode":"TS"}]

デコードする必要のある文字列をすべてそこに出力しますが、jsonデコードはそれだけではできないようですが、これを連想配列に入れて使用しようとすると、リクエストがここに表示されます

$ch = curl_init();
$timeout = 0;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$rawdatar = curl_exec($ch);
curl_close($ch);
$roomdata = json_decode($rawdatar);
print $roomdata;

$ rawdatarを印刷すると、前述のjsonの行が表示されますが、$ roomdataを印刷すると、配列しか表示されません。何が間違っているのでしょうか。

4

2 に答える 2

2

JSON データはオブジェクトの配列です。

これを試してください:

echo $roomdata[0]->roomType;

あなたの場合、それはそれが何であるかであるため、print($roomdata)常に表示されます。Array詳細については、json_decode を参照してください: http://php.net/manual/en/function.json-decode.php

于 2012-08-10T18:43:33.300 に答える
1

JSON をデコードしても、魔法のように連想配列に入れられるわけではありません。そこにある JSON 構造は、オブジェクトの配列を表します。次のように、これを連想配列にマップする必要があります。

$object_array = json_decode($rawdatar);
$result_array = array();
foreach($object_array as $obj) {
    $result_array[$obj->roomType] = $obj->roomTypeCode;
}
于 2012-08-10T18:43:51.610 に答える