• 11-07-2015, 17:27:40
    #1
    Arkadaşlar elimde 3 array var.
    $taksit[] = array("taksit"=>"11","tutar"=>"1100");
    $taksit[] = array("taksit"=>"5","tutar"=>"500");
    $taksit[] = array("taksit"=>"8","tutar"=>"800");

    Bunları hepsi aynı gün ödenmeye başlayacak şekilde sıralamam gerekiyor ama mantığı çıkaramadım

    Olması gereken tablo
    1. Ay = 300
    2. Ay = 300
    3. Ay = 300
    4. Ay = 300
    5. Ay = 300
    6. Ay = 200
    7. Ay = 200
    8. Ay = 200
    9. Ay = 100
    10. Ay = 100
    11. Ay = 100

    Bu şekilde ekrana nasıl basarım ?
  • 12-07-2015, 09:41:55
    #2
    <?php
    
    $taksit = array();
    $taksit[] = array("taksit"=>"11","tutar"=>"1100");
    $taksit[] = array("taksit"=>"5","tutar"=>"500");
    $taksit[] = array("taksit"=>"8","tutar"=>"800");
    
    // Taksit sayısı küçükten büyüğe oalcak şekilde diziyi sıralıyoruz
    usort($taksit, function($a, $b) {
        return $a['taksit'] - $b['taksit'];
    });
    
    $aylikTutar = 0;
    $ay = 1;
    
    // Dizinin üstünde değişiklik yapacağımız için başka bir değişken kullanıyoruz.
    // Orjinal değişken belki lazım olur sonra
    $taksitKopya = $taksit;
    
    // En büyük taksit sayısını alıyoruz.
    // Bu örnekte $son = 11 oluyor yani
    $son = end(array_values($taksit));
    $son = intval($son['taksit']);
    
    // En büyük taksit sayısı kadar bir döngü
    while($son > 0) {
            // Her ürün için
    	foreach($taksitKopya AS &$t) {
                    // Eğer taksit bitmişse bunu geçiyoruz
    		if($t['taksit'] == "0") {
    			continue;
    		}
    		
    		$aylikTutar += 100;
    		
    		$t['taksit']--;
    	}
    	
    	echo "$ay. ay: $aylikTutar\n";
    	
    	$ay++;
    	$son--;
    	$aylikTutar = 0;
    }
    Aylık taksiti direk 100 diye yazdım. Sen onu hesaplayıp bir değişkene atıp öyle kullanırsın.
  • 12-07-2015, 14:52:28
    #3
    _LosT_ adlı üyeden alıntı: mesajı görüntüle
    <?php
    
    $taksit = array();
    $taksit[] = array("taksit"=>"11","tutar"=>"1100");
    $taksit[] = array("taksit"=>"5","tutar"=>"500");
    $taksit[] = array("taksit"=>"8","tutar"=>"800");
    
    // Taksit sayısı küçükten büyüğe oalcak şekilde diziyi sıralıyoruz
    usort($taksit, function($a, $b) {
        return $a['taksit'] - $b['taksit'];
    });
    
    $aylikTutar = 0;
    $ay = 1;
    
    // Dizinin üstünde değişiklik yapacağımız için başka bir değişken kullanıyoruz.
    // Orjinal değişken belki lazım olur sonra
    $taksitKopya = $taksit;
    
    // En büyük taksit sayısını alıyoruz.
    // Bu örnekte $son = 11 oluyor yani
    $son = end(array_values($taksit));
    $son = intval($son['taksit']);
    
    // En büyük taksit sayısı kadar bir döngü
    while($son > 0) {
            // Her ürün için
    	foreach($taksitKopya AS &$t) {
                    // Eğer taksit bitmişse bunu geçiyoruz
    		if($t['taksit'] == "0") {
    			continue;
    		}
    		
    		$aylikTutar += 100;
    		
    		$t['taksit']--;
    	}
    	
    	echo "$ay. ay: $aylikTutar\n";
    	
    	$ay++;
    	$son--;
    	$aylikTutar = 0;
    }
    Aylık taksiti direk 100 diye yazdım. Sen onu hesaplayıp bir değişkene atıp öyle kullanırsın.
    Hocam bunu çalıştırdığımda

    1. ay: 300
    2. ay: 300
    3. ay: 300
    4. ay: 300
    5. ay: 300
    6. ay: 300
    7. ay: 300
    8. ay: 300
    9. ay: 300
    10. ay: 300
    11. ay: 300

    şeklinde bir çıktı alıyorum
  • 12-07-2015, 14:54:23
    #4
    icebreaker adlı üyeden alıntı: mesajı görüntüle
    Hocam bunu çalıştırdığımda

    1. ay: 300
    2. ay: 300
    3. ay: 300
    4. ay: 300
    5. ay: 300
    6. ay: 300
    7. ay: 300
    8. ay: 300
    9. ay: 300
    10. ay: 300
    11. ay: 300

    şeklinde bir çıktı alıyorum
    https://ideone.com/WBm543

    Düzgün çalışıyor. PHP sürümünüz nedir?
  • 12-07-2015, 15:03:06
    #5
    evet hocam çok kodları verdiğiniz linkden kopyalayınca çalıştı çok teşekkürler