json“PHP返回时进行编码”;2“;在大约300行上一次代替方括号(其他都是正确的)

json“PHP返回时进行编码”;2“;在大约300行上一次代替方括号(其他都是正确的),php,json,Php,Json,我有一个函数,它用json返回大量数据。这是工作良好,但今天,一个野生错误出现。我有一个字符串}],“2”:{“trainid而不是这个}],{“trainid 有一个“2”:不知从何而来,不知从何而来 这是我的代码(有点) $return\u list=array(); $query=“选择*来自列车用户” 如果($result=$mysqli->query($query)){ 而($row=$result->fetch_assoc()){ $trainlist=array(); $query

我有一个函数,它用json返回大量数据。这是工作良好,但今天,一个野生错误出现。我有一个字符串
}],“2”:{“trainid
而不是这个
}],{“trainid

有一个
“2”:
不知从何而来,不知从何而来

这是我的代码(有点)

$return\u list=array();
$query=“选择*来自列车用户”
如果($result=$mysqli->query($query)){
而($row=$result->fetch_assoc()){
$trainlist=array();
$query2=“从列车中选择*,其中列车\u用户\u id=“.$row['id\u用户]”;
如果($result2=$mysqli->query($query2)){
而($row2=$result2->fetch_assoc()){
$poollist[]=$row2['trainid'];
}
}
对于($i=0;$iquery($query2)){
而($row2=$result2->fetch_assoc()){
$row['train'][$i]=$rowPool;
}
}
}
$return_list[]=$row;
}
}
另一种相同的错误是:

“火车”:{“1”:{

与此相反:

“火车”:[{


{“1”:
取代了
[
,不知道为什么

如果我理解正确,你会得到
“火车”:{“1”:{
? 这意味着,trains是一个数组,具有不同的元素。 如果打印列车树,它将如下所示:

trains: {
  1: {
       First Element fo trains
     }
  2: {
       Second Element of trains
  }
}

JSON/Javascript有两种集合类型:数组和对象。数组是数字索引有序集合:

['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;

很难理解你在问什么或假设的问题是什么。请展示一个完整的格式良好的示例,而不仅仅是片段。这是因为你的数组的结构。通过打印检查它
print\r($return\u list);
非常感谢deceze,这就是问题的根源。关于Kisame
$row['train'][] = $rowPool;