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
asla çözülemeyen array döngüsü
7
●344
- 08-06-2018, 18:15:29
- 08-06-2018, 21:47:00Bir 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
<?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:40hocam süpersiniz çok sağolunonurkun adlı üyeden alıntı: mesajı görüntüle
