Это создаст вам массив, который вы ищете, хотя я бы посоветовал вам написать запрос для извлечения ваших данных в формате, который вы ищете.
$studentsScores = [
['idType'=>1, 'idStudent'=>1, 'score'=>'80'],
['idType'=>1, 'idStudent'=>2, 'score'=>'60'],
['idType'=>2, 'idStudent'=>3, 'score'=>'70'],
['idType'=>1, 'idStudent'=>4, 'score'=>'80'],
['idType'=>3, 'idStudent'=>1, 'score'=>'90'],
['idType'=>4, 'idStudent'=>2, 'score'=>'100'],
];
// Columns with default values
$columns = array_fill_keys(array_unique(array_column($studentsScores, 'idType')), 0);
$res = [];
foreach($studentsScores as $record){
if(!isset($res[$record['idStudent']])) $res[$record['idStudent']] = $columns;
$res[$record['idStudent']][$record['idType']] = $record['score'];
}
print_r($res);
Надеюсь, это поможет,