SQL bilgim bunu sadece SQL'de yapacak kadar iyi değil ne yazık ki ama şöyle bir şey yaptım:
/**
* Örnek cevaplar tablosu
* +----+---------+---------+---------+---------+---------+
* | id | Cevap_1 | Cevap_2 | Cevap_3 | Cevap_4 | Cevap_5 |
* +----+---------+---------+---------+---------+---------+
* | 1 | a | b | b | a | e |
* | 2 | b | c | c | a | e |
* | 3 | c | d | d | b | c |
* +----+---------+---------+---------+---------+---------+
*/
// Örnek veri
$kullaniciCevaplari = ['a', 'c', 'd', 'b', 'e'];
$ortusmeOranlariDizisi = [];
$cevapAnahtari = DB::table('cevaplar')->get();
foreach ($cevapAnahtari as $cevap) {
$cevaplar = [
$cevap->Cevap_1,
$cevap->Cevap_2,
$cevap->Cevap_3,
$cevap->Cevap_4,
$cevap->Cevap_5
];
$yanlislar = array_diff_assoc($kullaniciCevaplari, $cevaplar);
$ortusmeOrani = 100 - (count($yanlislar) * 20);
$ortusmeOranlariDizisi[$cevap->id] = $ortusmeOrani;
}
dd($ortusmeOranlariDizisi);
/*
array:3 [▼
1 => 40
2 => 40
3 => 20
]
*/