我不知道是什么原因引起的,但是下面是使用所需JSON格式生成的原始PHP代码:

的PHP

return response()->json($model->things, 200);

JSON格式
[
    {...},
    {...},
    ...
]

但是,当我对集合进行排序时,JSON中的数组成为一个对象。

的PHP
return response()->json($model->things->sortBy("name"), 200);

JSON格式
{
    "0": {...},
    "1": {...},
    ...
}

我做错什么了吗?在2种情况下,我尝试用dd编码集合,但结果对我来说似乎相同。

最佳答案

从laravel文档中:



所以在sortBy()之后,您将得到以下内容:

[2=>'val1', 1 => 'val2', 0 => 'val3']

它是一个关联数组,这解释了为什么在json中它成为一个对象,并且要防止这种情况,您需要使用values()方法,如下所示:
$model->things->sortBy("name")->values()->all()

第二个问题是为什么它没有排序,因此您可以阅读以下问题:json_encode not preserving order

10-05 20:47
查看更多