gpt4 book ai didi

Laravel 分组集合返回对象而不是数组

转载 作者:行者123 更新时间:2023-12-03 18:45:42 26 4
gpt4 key购买 nike

我有以下查询

$outings = Outing::all()->groupBy(function ($item) {
return Carbon::parse($item['start'])->format('m/d/Y');
});

return response()->json([
'outings' => $outings
], 200);

响应返回一个对象,我需要它返回一个数组
As you can see, outings is an object and not an array

我怎样才能让郊游成为一个数组而不是一个对象。

如果我不将集合分组而只是这样做
Outing::all();

它将返回一个数组而不是一个对象。 Group by 正在做一些奇怪的事情。

如果我 DD($outings) 它实际上返回一个集合,所以我认为它在返回到浏览器而不是数组时被转换为一个对象是很奇怪的。

下面是我 DD($outings->toArray()) 时的输出

enter image description here

谢谢

最佳答案

使用 array_values($array)将关联数组强制转换为 JSON 数组。但是,您会以这种方式丢失任何键名。

$outings = Outing::all()->groupBy(function ($item) {
return Carbon::parse($item['start'])->format('m/d/Y');
});

return response()->json([
'outings' => array_values($outings)
], 200);

没有人真正解释过为什么会发生这种情况。

在 JavaScript/JSON 中,数组只是值的集合,它们是有键的,但键总是按顺序排列的数字。

在 PHP 中,数组是 "key" => "value" 的集合对,键可以是任何东西(整数或字符串),但数组通常可以被认为是“关联的”(其中键是非数字的,或数字但不按顺序)或“非关联的”(其中键是数字 AND按顺序(类似于 JS 数组)。

在将 PHP 数组编码为 JSON 时,假设数组具有非数字键或键是数字但不按顺序排列(例如 0、1、2、4、5、8、10) - 这些类型数组与 JavaScript/JSON 数组不兼容。在这种情况下,数组被转换为一个对象以保留键。要强制将数组转成数组,必须将数组转成非关联数组(数字顺序键),PHP有函数 array_values 来帮助解决这个问题。

关于Laravel 分组集合返回对象而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51087064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com