Вероятно, лучший способ - это создать запрос, который получит этот результат для вас, используя агрегатные функции COUNT()
и GROUP BY
с HAVING COUNT(*) > 1
.
$result = DB::table("detiltransaksiservice")->leftJoin('service', 'service.kodeService', 'detiltransaksiservice.kodeService')
->select('service.keterangan', DB::raw('COUNT(*) as total'))
->groupBy('service.keterangan')
->havingRaw("COUNT(*) > 1")
->get();
Если вы, однако,хотите сделать это на PHP, вы можете использовать array_filter()
.
Вы можете отфильтровать результат по array_count_values()
по количеству больше единицы.Учитывая, что теоретически это может быть более одной записи, имеющей более двух вхождений, было бы лучше сохранить ее как индексированный массив.
$array = ['Service Mesin Ringan' => 1, 'Service Stang' => 2, 'Service Kabel' => 1];
$array = array_filter($array, function($v) { return $v > 1; });
var_dump($array);
Вывод:
array(1) {
["Service Stang"]=>
int(2)
}