2017-03-06 71 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