关于 Laravel collection 处理重复记录的问题

在 laravel 中,使用 collect 处理数组是一件非常棒的事情。
废话少说!直接看代码,下面是一段简单的根据字段 id 去除重复记录的处理

$arr = [
        ['id' => 1, 'name' => 'lily'],
        ['id' => 2, 'name' => 'lucy'],
        ['id' => 1, 'name' => 'lily', 'email' => '[email protected]'],
        ['id' => 3, 'name' => 'hanmeimei'],
        ['id' => 4, 'name' => 'xiaocun'],
        ['id' => 5, 'name' => 'donggua']
];
$result = collect($arr)->unique('id')->take(3)->toArray();
/*
 处理的结果是
   [
     0 => [
       "id" => 1,
       "name" => "lily",
     ],
     1 => [
       "id" => 2,
       "name" => "lucy",
     ],
     3 => [
       "id" => 3,
       "name" => "hanmeimei",
     ],
   ]
*/

然而,现实开发中通常遇到的数组并不都那么友好,当数组变成这样了:

$arr = [
        ['_source' =>  ['id' => 1, 'name' => 'lily'], '_id' => 1],
        ['_source' =>  ['id' => 2, 'name' => 'lucy'], '_id' => 2],
        ['_source' =>  ['id' => 1, 'name' => 'lily', 'email' => '[email protected]'], '_id' => '1game'],
        ['_source' =>  ['id' => 3, 'name' => 'hanmeimei'], '_id' => 3],
        ['_source' =>  ['id' => 4, 'name' => 'xiaocun'], '_id' => '4app'],
        ['_source' =>  ['id' => 5, 'name' => 'donggua'], '_id' => 'app5']
 ];

那么,又该如何根据字段 id 去重呢?
使用 foreach 记录 id 的出现的确可以解决,但是在 collection 的使用上犯愁了。所以,请教各位使用 collection 如何对这类升级的数组去重呢?

尝试了一下就解决了,昨晚犯愁了大半夜,没想到晚上真的头脑不灵光(效率好低)。所以,这个问题就这样吧,谢谢了~

$result = collect($arr)->unique(function($item){
    return $item['_source ']['id'];
})->take(3)->toArray();
chenyuanqi
修改的评论也不能少于六个字哦!