我的应用程序返回一个对象数组,每个对象都包含一个“名称” 键,该键有时会在其他对象中重复。
如何过滤重复项?
这是一个重复的数组
[
{"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();
答案 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'
]
并且不要忘记在更改配置文件中的任何内容后清除缓存。