<?php

$gelenArray = [
    12 => [
        11 => 0.0,
        4 => 0.0,
        5 => 0.0,
        19 => 0.0
    ],
    13 => [
        11 => 100.0,
        4 => 0.0,
        5 => 0.0,
        19 => 0.0
    ],
    14 => [
        11 => 0.0,
        4 => 0.0,
        5 => 0.0,
        19 => 0.0,
    ],
    15 => [
        11 => 0.0,
        4 => 0.0,
        5 => 0.0,
        19 => 0.0,
    ]
];

# temp array değişkenimiz
$temp = [];
# Verilen dizi döngüye sokulup, userID keyi ve $sonuclar valuesi tanımlanıyor
foreach($gelenArray as $userID => $sonuclar){
    # ikinci arraydaki elemanları küçükten büyüğe sıralıyoruz
    asort($sonuclar);
  
    # bir sayı tutucu belirliyoruz, 4. indise geçmesini engellemek için
    $i = 1;
    foreach($sonuclar as $soruID => $sonuc){
        # oluşturduğumuz temp arraya atama yapıyoruz
        $temp[$userID][$soruID] = $sonuc;
      
      
        /*
        database kayıt kodunu buraya gireceksin, $userID kullanıcı id'sini verir, $soruID soru id'sini verir, $sonuc sonucu verir
        orn : $db->insert(["userID" => $userID, "soruID" => $soruID, "sonuc" => $sonuc]);
        */
      
        # 3. indisi kaydettiğinde döngüyü sonlandıracak
      
        if ($i == 3) break;
        $i++;
    }
}

# Eğer lazım olursa ; sıralanmış diziye $temp değişkeni ile ulaşabilirsin.