2017-03-06 14 views
-1

これからデータを取得するためのPHPの書き方。連想配列からデータを取得する方法

{"room":[{"single_room":1,"twin_room":3}]}{"total_amount":[{"amount":20899}]}{"travelernum":[{"total":1}]} 

私はこの

$BookingDetail["room"]["single_room"]; 

ようにしようとしましたが、この

不正な文字列オフセットの部屋 "

のようになりました

不正な文字列オフセット 'single_room'

どのように解決するか。

+1

これは配列ではありません。 – AbraCadaver

+1

json_decode()とvar_dump($ var) – Roy

+2

これは3つのJSONを連結したものですが、どうやって取得しますか?あなたはそれらをさまざまな変数に入れていますか? –

答えて

0

はこれを試してみてください...あなたは私があなたのJSONが無効であると思いますが、ところで...

<?php 

$str = '{"room":[{"single_room":1,"twin_room":3}]}{"total_amount":[{"amount":20899}]}{"travelernum":[{"total":1}]}'; 

$json = json_decode($str); 

echo "<pre>"; 
print_r($json); 
echo "</pre>"; 

echo $json->room->single_room; 

あなたはPHPオブジェクトを取得し、その後、各要素にアクセスすることができ、JSONをデコードする必要があります。これをチェックアウトすることができますhttp://jsonlint.com/

+1

有効なjsonでない3jsonの連結 –

+0

が機能しないため、動作しません。それは3つのjsonエンコードされたデータのコンボです –

0

使用している文字列はJSONのように見えますが、有効であるとチェックアウトしません。これは、すべての文字列であるフォーマットである場合JSONLint.com ...(1回線)、それが有効にするために、それを編集...

{"room": [{"single_room": 1, "twin_room": 3}], "total_amount": [{"amount": 20899}], "travelernum": [{"total": 1 }]} 

OR(マルチライン)...

{ 
    "room": [{ 
     "single_room": 1, 
     "twin_room": 3 
    }], 
    "total_amount": [{ 
     "amount": 20899 
    }], 
    "travelernum": [{ 
     "total": 1 
    }] 
} 

を参照してください。あなたの文字列が有効なJSON形式になると、あなたが使用して最初の...

$original_string = '{"room":[{"single_room":1,"twin_room":3}]}{"total_amount":[{"amount":20899}]}{"travelernum":[{"total":1}]}'; 
$new_string = str_replace("}{", ",", $original_string); // replace }{ with , 

で有効なJSONにそれらを操作することができ、中に、かなりシンプルなので、このようなものを使用し、PHPの配列に変換する...

$BookingDetail = json_decode($new_string, true); //true param gets assoc array 

上記のコードをすべてテストしたところ、JSON文字列をPHP配列に変換する方法の詳細については、PHPのjson_decode()関数リファレンスを参照してください。
http://php.net/manual/en/function.json-decode.php

関連する問題