• 08-08-2022, 22:20:51
    #1
    2 Adet dizim mevcut. Dizi içersinde elemanlarım var. Array1 de ödenmemiş ürünleri , Array 2 de ödenmiş ürünleri listeliyorum .
    Array1 ve Array2 yi topladığımda eğer id'ler ortaksa adet ve toplam fiyatı toplayıp tek satırda yazmam ve arrayi adete göre çoktan aza sıralamam gerekiyor nasıl yapabilirim?
    Teşekkürler

    $array1 = Array ( [id] => 16 [0] => 16 [adet] => 2 [1] => 2 [toplamfiyat] => 96 [2] => 96 [baslik] => Waffle [3] => Waffle )
    $array2 = Array ( [id] => 16 [0] => 16 [adet] => 4 [1] => 4 [toplamfiyat] => 186 [2] => 186 [baslik] => Waffle [3] => Waffle )
  • 08-08-2022, 22:34:32
    #2
    <?php
    $array = array(
        array( 'id' => 16, 'adet' => 2, 'toplamfiyat' => 96, 'baslik' => 'Waffle'),
        array( 'id' => 16, 'adet' => 4, 'toplamfiyat' => 186, 'baslik' => 'Waffle'),
        array( 'id' => 1, 'adet' => 3, 'toplamfiyat' => 10, 'baslik' => 'QuarkChain'),
        array( 'id' => 2, 'adet' => 5, 'toplamfiyat' => 10, 'baslik' => 'R10')
    );
    
    
    $data = array();
    
    foreach ($array as $column) {
        if ( ! isset($data[ $column['id'] ])) {
            $data[ $column['id'] ] = array('baslik' => $column['baslik'], 'adet' => $column['adet'], 'toplamfiyat' => $column['toplamfiyat']);
        } else {
            $data[ $column['id'] ]['adet'] += $column['adet'];
            $data[ $column['id'] ]['toplamfiyat'] += $column['toplamfiyat'];
        }
    }
    
    usort($data, function($a, $b){
        return ($b['adet'] - $a['adet']);
    });
    
    echo '<pre>';
    print_r($data);
    echo '</pre>';
  • 08-08-2022, 22:37:36
    #3
    QuarkChain adlı üyeden alıntı: mesajı görüntüle
    <?php
    $array = array(
        array( 'id' => 16, 'adet' => 2, 'toplamfiyat' => 96, 'baslik' => 'Waffle'),
        array( 'id' => 16, 'adet' => 4, 'toplamfiyat' => 186, 'baslik' => 'Waffle'),
        array( 'id' => 1, 'adet' => 3, 'toplamfiyat' => 10, 'baslik' => 'QuarkChain'),
        array( 'id' => 2, 'adet' => 5, 'toplamfiyat' => 10, 'baslik' => 'R10')
    );
    
    
    $data = array();
    
    foreach ($array as $column) {
        if ( ! isset($data[ $column['id'] ])) {
            $data[ $column['id'] ] = array('baslik' => $column['baslik'], 'adet' => $column['adet'], 'toplamfiyat' => $column['toplamfiyat']);
        } else {
            $data[ $column['id'] ]['adet'] += $column['adet'];
            $data[ $column['id'] ]['toplamfiyat'] += $column['toplamfiyat'];
        }
    }
    
    usort($data, function($a, $b){
        return ($b['adet'] - $a['adet']);
    });
    
    echo '<pre>';
    print_r($data);
    echo '</pre>';
    Çok teşekkür ederim hocam.