首页 > 解决方案 > DB::select() - 如何获取数组数组而不是集合数组

问题描述

我有原始查询:$data = DB::select('...');

结果,$data是一个集合数组:

array:999 [
  0 => {#331
    +"v": 1
  }
  1 => {#328
    +"v": 2
  }
  2 => {#332
    +"v": 3
  }
  ...
]

我想获取数组数组:

array:999 [
  0 => array:1 [
    "v" => 2
  ]
  1 => array:1 [
    "v" => 3
  ]
  ...
]

$data我可以通过强制转换来迭代array

$arr = [];
foreach ($data as $i) {
    $arr[] = (array)$i;
}

//other way

$arr = array_map(function ($i) {
    return (array)$i;
}, $data);

但这似乎不是大型数据集的最佳方式。

标签: laravel-5.7

解决方案


对集合使用 toArray() 方法。您可以致电 $data = DB::select(...); $data = collect($data)->toArray(); https://laravel.com/docs/5.8/collections#method-toarray


推荐阅读