我有一个函数,它以json形式返回大量数据。它运行良好,但今天出现了一个巨大的错误。我有这个字符串}]},"2":{"trainid
而不是这个}]},{"trainid
不知从哪里来了"2":
,不知道它是从哪里来的。
这是我的代码
$return_list = array();
$query = "SELECT * from train_users"
if($result = $mysqli->query($query)) {
while($row = $result->fetch_assoc()) {
$trainlist = array();
$query2 = "Select * FROM train WHERE train_users_id = ".$row['id_user'];
if($result2 = $mysqli->query($query2)) {
while($row2 = $result2->fetch_assoc()) {
$poollist[] = $row2['trainid'];
}
}
for($i = 0; $i < count($finalPoolList) ; $i++) {
$query2 = "Select * FROM trainpassengers WHERE trainid = ".$row['id_user'];
if($result2 = $mysqli->query($query2)) {
while($row2 = $result2->fetch_assoc()) {
$row['train'][$i] = $rowPool;
}
}
}
$return_list[] = $row;
}
}
另一种相同的错误是:
"trains":{"1":{
而不是这个:
"trains":[{
{"1":
取代[
,不知道为什么
['foo', 'bar', 'baz']
对象是键值关联:
{ foo : 'bar', baz : 42 }
PHP只有一种集合类型:关联有序键值存储:
array('foo', 'bar' => 'baz', 42)
当编码为JSON时,任何具有从0开始的连续数字索引的PHP数组都会转换为JSON数组:
array('foo', 'bar', 'baz') → ['foo', 'bar', 'baz']
其他任何东西都转换为对象:
array(1 => 'foo', 2 => 'bar', 3 => 'baz') → { "1" : "foo", "2" : "bar", "3" : "baz" }
因为你正在创建这样的数组:
$row['train'][$i] = $rowPool;
$i
并不总是从0
开始,所以您正在创建转换为对象的数组
只需去掉$i
:
$row['train'][] = $rowPool;
如果我理解正确,你得到了"trains":{"1":{
?这意味着,火车是一个数组,有不同的元素。如果你打印一个火车树,它看起来像:
trains: {
1: {
First Element fo trains
}
2: {
Second Element of trains
}
}