Laravel删除数组中具有重复值的对象

时间:2019-09-22 05:02:35

标签: php laravel

我的应用程序返回一个对象数组,每个对象都包含一个“名称” 键,该键有时会在其他对象中重复。

如何过滤重复项?

这是一个重复的数组

[
    {"name":"India","id":2,"uid":"1M16"},
    {"name":"Delhi","id":3,"uid":"1M16"},
    {"name":"India","id":4,"uid":"1M16"}
]

我想要的输出是:

[
    {"name":"India","id":2,"uid":"1M16"},
    {"name":"Delhi","id":3,"uid":"1M16"}
]

这就是我从数据库中获取此数组的方式。

$results_1 = Sheet::whereIn('uid', $results_1)->select('name', 'id', 'uid')->get(); 

1 个答案:

答案 0 :(得分:1)

如果只需要一列,则可以使用distinct()。在您的情况下,您需要groupBy()才能获得唯一值。

$results_2 = Sheet::whereIn('uid', $results_1)->select('name', 'id', 'uid')->groupBy('name')->get();
  

您正在$results_1子句中使用相同的whereIn变量保存新值。考虑使用其他变量。

要使用groupBy(),必须在数据库配置文件中进行一些更改。在您的config>database.php文件中,将此行添加到mysql配置中。

'modes' => [

    'STRICT_TRANS_TABLES',
    'NO_ZERO_IN_DATE',
    'NO_ZERO_DATE',
    'ERROR_FOR_DIVISION_BY_ZERO',
    'NO_AUTO_CREATE_USER',
    'NO_ENGINE_SUBSTITUTION'
]

并且不要忘记在更改配置文件中的任何内容后清除缓存。