<?php
$data = file_get_contents("php://input");
$json = json_decode($data);
mysql_connect("localhost", "root", "12345") or die("Could not connect");
mysql_select_db("db_shuttlebus") or die("Could not select database");
foreach($json as $obj){
echo $obj->_id;
}
?>
firebug json string
这只是1条记录json字符串
{"_id":2,"Route_Seq":2,"Location_Name":"ABC","Route_LocationID":6,"Route_ID":"1","id":null}
这是2条记录,并且工作正常
[{"_id":2,"Route_Seq":1,"Location_Name":"perak","Route_LocationID":"6","Route_ID":"1","id":null},{"_id":1,"Route_Seq":2,"Location_Name":"TRY","Route_LocationID":"1","Route_ID":"1","id":null}]
更新:当json只有1条记录时,它就不会循环,
如果超过1条记录那么它工作正常,为什么?
答案 0 :(得分:1)
简单:两次都返回一个JSON数组。 foreach
遍历数组而你没有给它一个。包含一个元素的数组没有任何问题。
您对一条记录的JSON应如下所示:
[{"_id":2,"Route_Seq":2,"Location_Name":"ABC","Route_LocationID":6,"Route_ID":"1","id":null}]
如果您无法更改返回的数据的形式,请在循环之前使用函数is_array
进行测试,并将一条记录作为特殊情况处理。
具体来说,您可以使用以下内容替换底部的循环:
if(is_array($json)) {
foreach($json as $obj){
echo $obj->_id;
}
} else {
echo $json->_id;
}