如何将 laravel 集合转换为方括号集合

How to convert lavavel collection to square bracket collection

我有 laravel livewire 集合如下。

  [
    {
    "date":"2021.09.01-0:00",
    "open":110.177,
    "close":110.175,
    "low":110.172,
    "high":110.18
    },
    {
    "date":"2021.09.01-0:01",
    "open":110.175,
    "close":110.171,
    "low":110.169,
    "high":110.175
    },
    {
    "date":"2021.09.01-0:02",
    "open":110.171,
    "close":110.173,
    "low":110.17,
    "high":110.176
    }
  ]

我想将它们转换成没有键名的方括号集合形式,如下所示。

$data = [
          ['2021.09.01-0:00',110.177,110.175,110.172,110.18],
          ['2021.09.01-0:01',110.175,110.171,110.169,110.175],
          ['2021.09.01-0:02',110.171,110.173,110.17,110.176]
       ];

如有任何建议或指导,我们将不胜感激,谢谢。

可以使用集合map方法:

The map method iterates through the collection and passes each value to the given callback. The callback is free to modify the item and return it

https://laravel.com/docs/8.x/collections#method-map

$expectData = $collection->map(fn($item) => [$item-> date, $item->open,...])

我不确定原始数据是什么,但您可以 map 覆盖 collection 并提取值;如果 Eloquent 型号:

$data->map(fn ($v) => array_values($v->toArray()))

将取决于您如何获得原始 Collection 在这种情况下它会如何结束。

如果您需要限制返回的属性及其顺序,您可以在模型上使用 only

fn ($v) => array_values($v->only(['date', ...]))