2017-03-06 97 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對象,然後就可以訪問每一個元素..

<?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; 

順便說一句,我想你的JSON是無效的。您可以在http://jsonlint.com/

+1

它不會工作,因爲那些3 json的連接 –

+0

不是一個有效的JSON,將無法正常工作。它是3 json編碼數據的組合 –

0

中查看此字符串您使用的字符串看起來像JSON,但它不檢出爲有效。見JSONLint.com ...編輯它,使之有效(單線)...

{"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 

我測試的所有代碼的上方和它works.See PHP json_decode()函數爲參考更詳細地對轉換JSON字符串PHP陣列。
http://php.net/manual/en/function.json-decode.php