我有以下JSON存储在MongoDB集合:
{
"_id" : ObjectId("bbbbbaaaaaaaaaaaaa998a50"),
"client" : "1",
"services" : [
{
"minutes" : 30,
"label" : "Service 30"
},
{
"minutes" : 60,
"label" : "Service 60"
}
],
"status" : "Active",
"lastModifiedOn" : ISODate("2016-01-14T12:17:08.780Z"),
"createdOn" : ISODate("2016-01-14T12:17:08.780Z"),
// ...
}
我只传递某些值给网站:
$catalog['services'] = $databaseCatalog->services;
$catalog['status'] = $databaseCatalog->status;
作为JSON使用:
var catalog = <?php echo json_encode($catalog) ?>;
这会导致非预期的索引:
var catalog = {"services":{"0":{"minutes":30,"label":"Service 30"}, ,"1":{"minutes":60,"label":"...
问题:这个索引("0","1")是从哪里来的,我如何防止这种情况发生?
请求的var dump:
array (size=1)
'services' =>
object(MongoDB'Model'BSONArray)[47]
public 0 =>
object(MongoDB'Model'BSONDocument)[40]
public 'minutes' => int 30
public 'label' => string 'Service 30' (length=10)
public 1 =>
object(MongoDB'Model'BSONDocument)[41]
public 'minutes' => int 60
public 'label' => string 'Service 60' (length=10)
这个问题是由于MongoDB提供了一个对象,一旦映射到一个数组生成索引。
解决方案是使用以下方法:
$catalog['services'] = array_values((array)$databaseCatalog->services);
$catalog['status'] = array_values((array)$databaseCatalog->status);