• 08-06-2018, 17:56:00
    #1
    Merhabalar çok karışık bir konu var elimde yardımlarınızı rica ediyorum elimde şöyle bir array var
    array:4 [▼ 12 => array:4 [▼ 11 => 0.0 4 => 0.0 5 => 0.0 19 => 0.0 ] 13 => array:4 [▼ 11 => 100.0 4 => 0.0 5 => 0.0 19 => 0.0 ] 14 => array:4 [▼ 11 => 0.0 4 => 0.0 5 => 0.0 19 => 0.0 ] 15 => array:4 [▼ 11 => 0.0 4 => 0.0 5 => 0.0 19 => 0.0 ]]benim yapmak istediğim ise şu arraya girip birinci arraya girecek sonra içerdeki key lerin valuelarını küçükten büyüğe doğru dizip bunu tek tek ilk keyi ile veritabanına kaydedicek Yani ;



    15 => [ 11 => 0.0 , 4 => 0.0 ]



    15 e girdi sonra 11 in valuesuna baktı 4 de baktı sonra bunları küçükten büyüğe doğru sıraladı ve ilk 3 ü alıp key 15 olarak bunları kaydetti.veritabanıanda şöyle yazdı

    mainkey => 15 , childkey => 11 , value => 0.0 diye

    yardım edecek bir allahın kulu var mdıır avaba kime sorsam bilemedi
  • 08-06-2018, 18:15:29
    #2
    Platin üye
    Mehaba;
    http://php.net/manual/tr/function.array-multisort.php
    İnceleyin,

    İyi çalışmalar dilerim.
  • 08-06-2018, 21:06:43
    #4
    hocam dedikleriniz doğru fakat array içinde array var şu an
  • 08-06-2018, 21:19:56
    #5
    Dediğinizi kod üstünde döküp paylaşırsanız, ne değeri girilecek, çıktı nasıl olacak. Yardımcı olmaya çalışırız.
  • 08-06-2018, 21:47:00
    #6
    Bir yarışma sistemi yarışmada belli kriterler var 4 erli gruplarda öncelikli olanları seçiyoruz.sonra bu gruplardan kötü olan 3 tanesi ile yarışmayı düzenliyor.benimde amacım her ay başında bu kötü giden sonuçları tespit edip db ye yazarak yarışmayıo başlatmak
    $prioritys = DB::table('competition_prioritys')->where('priority', '!=', null)->orderBy('priority', 'ASC')->get();  //öncelikli sırasına göre kriterler çekildi
     
    foreach ($prioritys as $pri) {  
      $prios[] = $pri->id;       //array parse edilip sadece kriterlerin idsi bulunan array elde edildi
    }
     
    $primary = array_slice($prios, 0, 4); // ilk 4 önemli kriter alındı
    $secondary = array_slice($prios, 4, 4); // ikinci 4 önemli kriter alındı
    $tritary = array_slice($prios, 8, 4); // sonuncu 4 önemli kriter alındı
    $sen = User::where([['author', '=', 'Satış Danışmanı'])->get();  //yarışmaya katıalcak olan üyelerin bilgisi geldi
     
    foreach ($sen as $primarys => $ben) {  
      $un[$ben->id] = $ben->competitionResultWithArray($primary);   //yazılan özel bir fonksiyon ile üyelerin ilk 4 kriterin sonuçları array olarak verdi
    }
    en son aldığım çıktı şudur http://prntscr.com/jsnpya

    yarışmacının id si ve içerde ilk 4 sorunun idsi => sonucu

    benim burda yapmak istediğim bu arrayda kullanıcın idsini alıp içerdeki sonuçları küçükten büyüğe doğru sıralıyıp ilk 3ünü db ye kayıt etmek istiyorum

    diğer grup krtierlerıda aynı şekilde yaparım yeterki burda mantığını anlamam gerekli yapamadım bir türlü
  • 08-06-2018, 23:00:43
    #7
    <?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.
  • 09-06-2018, 00:23:40
    #8
    onurkun adlı üyeden alıntı: mesajı görüntüle
    <?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.
    hocam süpersiniz çok sağolun