• 14-08-2020, 19:29:09
    #1
    Merhabalar,

    Elimde şu şekilde bir array var.

    array:4[
    0 => array:3 [
    'customerName' => "Hasan Kelat"
    'customerPhone' => 5555555555
    'Difference' => 125.0
    ]
    1=> array:3 [
    'customerName' => "Hasan Kelat"
    'customerPhone' => 5555555555
    'Difference' => 192.0
    ]
    2=> array:3 [
    'customerName' => "Cenk Celal"
    'customerPhone' => 111111111
    'Difference' => 145.0
    ]
    3=> array:3 [
    'customerName' => "Cenk Celal"
    'customerPhone' => 111111111
    'Difference' => 114.0
    ]
    ]
    Ben ise bu arrayin şu şekilde olmasını istiyorum.
    array:2[
    0 => array:3 [
    'customerName' => "Hasan Kelat"
    'customerPhone' => 5555555555
    'Difference' => 125.0
    ]
    1=> array:3 [
    'customerName' => "Cenk Celal"
    'customerPhone' => 111111111
    'Difference' => 114.0
    ]
    ]
    Yani anlayacağınız şu ki;

    Eğer diziler içinde "customerName" aynı ise bu dizilerin arasından en küçük "Difference" değerine sahip olan dizi dışında diğer dizilerin hepsini sil.

    Bunu bir türlü kodlayamadım dostlar. Yardım edebilecek birileri olursa çok sevinirim açıkçası, teşekkürler şimdiden
  • 14-08-2020, 19:35:30
    #2
    Üyeliği durduruldu
    Döngüye alıp Difference indisini min($array['Difference']); ile en küçük değeri alıp geri daha sonra unset ile geri kalanı silebilirsin.
  • 14-08-2020, 19:39:00
    #3
    oktayWEB adlı üyeden alıntı: mesajı görüntüle
    Döngüye alıp Difference indisini min($array['Difference']); ile en küçük değeri alıp geri kalanını unset ile geri kalanı silebilirsin.
    Teşekkürler ancak tüm arraylar içinde en küçüğüne ihtiyacım yok. Eğer tüm arrayler içinde "customerName" aynı olan 2 den fazla dizi varsa bunlar arasında en küçük "Difference" değerini bırakacak ve geri kalan AYNI "customerName" li dizileri silecek. Eğer verdiğim örneğe bakarsanız sizde fark edeceksiniz. Aynı "customerName" e sahip olan arrayleri kontrol edip minimum Difference değerli olanı bırakıyor sürekli. Bu sayede 4 arrayden 2 arraye düşüyor sonuç.
  • 14-08-2020, 21:12:01
    #4
    Üyeliği durduruldu
    Hocam kodlarınızı paylaşırmısınız, bir çözüm buldum sanki.
  • 14-08-2020, 21:15:36
    #5
    oktayWEB adlı üyeden alıntı: mesajı görüntüle
    Hocam kodlarınızı paylaşırmısınız, bir çözüm buldum sanki.
    Hocam elimde bir kod yok. Sadece bu array var. Siz isterseniz $array = [] şeklinde statik olarak oluşturup çözümünüzü paylaşabilirsiniz.
  • 14-08-2020, 22:38:19
    #6
    Üyeliği durduruldu
    Hocam onu bende biliyorum
    Tüm php'nin tüm dizi işlevlerini araştırdım, çoğunu localde denedim, iş zor.
    Ben kaynağı daha kolay parçalayabiliriz veya veriyi daha basit halde çekeriz diye kodları paylaşmanızı istemiştim.
  • 15-08-2020, 03:52:07
    #7
    Üyeliği durduruldu
    emrecanozkan adlı üyeden alıntı: mesajı görüntüle
    Merhabalar,

    Elimde şu şekilde bir array var.

    array:4[
    0 => array:3 [
    'customerName' => "Hasan Kelat"
    'customerPhone' => 5555555555
    'Difference' => 125.0
    ]
    1=> array:3 [
    'customerName' => "Hasan Kelat"
    'customerPhone' => 5555555555
    'Difference' => 192.0
    ]
    2=> array:3 [
    'customerName' => "Cenk Celal"
    'customerPhone' => 111111111
    'Difference' => 145.0
    ]
    3=> array:3 [
    'customerName' => "Cenk Celal"
    'customerPhone' => 111111111
    'Difference' => 114.0
    ]
    ]
    Ben ise bu arrayin şu şekilde olmasını istiyorum.
    array:2[
    0 => array:3 [
    'customerName' => "Hasan Kelat"
    'customerPhone' => 5555555555
    'Difference' => 125.0
    ]
    1=> array:3 [
    'customerName' => "Cenk Celal"
    'customerPhone' => 111111111
    'Difference' => 114.0
    ]
    ]
    Yani anlayacağınız şu ki;

    Eğer diziler içinde "customerName" aynı ise bu dizilerin arasından en küçük "Difference" değerine sahip olan dizi dışında diğer dizilerin hepsini sil.

    Bunu bir türlü kodlayamadım dostlar. Yardım edebilecek birileri olursa çok sevinirim açıkçası, teşekkürler şimdiden

    <?php
    $dizi = [
        [
            'customerName' => "Hasan Kelat",
            'customerPhone' => 5555555555,
            'Difference' => 125.0
        ],
        [
            'customerName' => "Hasan Kelat",
            'customerPhone' => 5555555555,
            'Difference' => 192.0
        ],
        [
            'customerName' => "Cenk Celal",
            'customerPhone' => 111111111,
            'Difference' => 145.0
        ],
        [
            'customerName' => "Cenk Celal",
            'customerPhone' => 111111111,
            'Difference' => 114.0
        ],
    
    ];
    foreach($dizi as $key1 => $value1) {
        foreach($dizi as $key2 => $value2) {
            if($value1['customerName'] == $value2['customerName']) {
                if($value2['Difference'] < $value1['Difference']) {
                    unset($dizi[$key1]);
                }
            }
        }
    }
    sort($dizi, SORT_NUMERIC);
    
    echo '<pre>';
    print_r($dizi);
    
    /*
    Çıktı:
    
    Array
    (
    [0] => Array
    (
    [customerName] => Hasan Kelat
    [customerPhone] => 5555555555
    [Difference] => 125
    )
    
    [1] => Array
    (
    [customerName] => Cenk Celal
    [customerPhone] => 111111111
    [Difference] => 114
    )
    
    )
    */
    ?>
  • 15-08-2020, 10:33:11
    #8
    $arr = [
    [
    'customerName' => "Hasan Kelat",
    'customerPhone' => 5555555555,
    'Difference' => 125.0
    ],
    [
    'customerName' => "Hasan Kelat",
    'customerPhone' => 5555555555,
    'Difference' => 192.0
    ],
    [
    'customerName' => "Cenk Celal",
    'customerPhone' => 111111111,
    'Difference' => 145.0
    ],
    [
    'customerName' => "Cenk Celal",
    'customerPhone' => 111111111,
    'Difference' => 114.0
    ],
    
    ];
    
    
    function unique_multidim_array($array, $key) {
    $temp_array = array();
    $i = 0;
    $key_array = array();
    
    foreach($array as $val) {
    if (!in_array($val[$key], $key_array)) {
    $key_array[$i] = $val[$key];
    $temp_array[$i] = $val;
    }
    $i++;
    }
    return $temp_array;
    }
    
    $columns = array_column($arr, 'Difference');
    array_multisort($columns, SORT_ASC, $arr);
    
    $arr = unique_multidim_array($arr, "customerName");
    
        var_dump($arr);
    Sonuç:
    array(2) {  [0]=>  array(3) {    ["customerName"]=>    string(10) "Cenk Celal"    ["customerPhone"]=>    int(111111111)    ["Difference"]=>    float(114)  }  [1]=>  array(3) {    ["customerName"]=>    string(11) "Hasan Kelat"    ["customerPhone"]=>    int(5555555555)    ["Difference"]=>    float(125)  }}
  • 15-08-2020, 13:36:21
    #9
    coder63 adlı üyeden alıntı: mesajı görüntüle
    $arr = [
    [
    'customerName' => "Hasan Kelat",
    'customerPhone' => 5555555555,
    'Difference' => 125.0
    ],
    [
    'customerName' => "Hasan Kelat",
    'customerPhone' => 5555555555,
    'Difference' => 192.0
    ],
    [
    'customerName' => "Cenk Celal",
    'customerPhone' => 111111111,
    'Difference' => 145.0
    ],
    [
    'customerName' => "Cenk Celal",
    'customerPhone' => 111111111,
    'Difference' => 114.0
    ],
    
    ];
    
    
    function unique_multidim_array($array, $key) {
    $temp_array = array();
    $i = 0;
    $key_array = array();
    
    foreach($array as $val) {
    if (!in_array($val[$key], $key_array)) {
    $key_array[$i] = $val[$key];
    $temp_array[$i] = $val;
    }
    $i++;
    }
    return $temp_array;
    }
    
    $columns = array_column($arr, 'Difference');
    array_multisort($columns, SORT_ASC, $arr);
    
    $arr = unique_multidim_array($arr, "customerName");
    
        var_dump($arr);
    Sonuç:
    array(2) {  [0]=>  array(3) {    ["customerName"]=>    string(10) "Cenk Celal"    ["customerPhone"]=>    int(111111111)    ["Difference"]=>    float(114)  }  [1]=>  array(3) {    ["customerName"]=>    string(11) "Hasan Kelat"    ["customerPhone"]=>    int(5555555555)    ["Difference"]=>    float(125)  }}
    hasyer adlı üyeden alıntı: mesajı görüntüle
    <?php
    $dizi = [
        [
            'customerName' => "Hasan Kelat",
            'customerPhone' => 5555555555,
            'Difference' => 125.0
        ],
        [
            'customerName' => "Hasan Kelat",
            'customerPhone' => 5555555555,
            'Difference' => 192.0
        ],
        [
            'customerName' => "Cenk Celal",
            'customerPhone' => 111111111,
            'Difference' => 145.0
        ],
        [
            'customerName' => "Cenk Celal",
            'customerPhone' => 111111111,
            'Difference' => 114.0
        ],
    
    ];
    foreach($dizi as $key1 => $value1) {
        foreach($dizi as $key2 => $value2) {
            if($value1['customerName'] == $value2['customerName']) {
                if($value2['Difference'] < $value1['Difference']) {
                    unset($dizi[$key1]);
                }
            }
        }
    }
    sort($dizi, SORT_NUMERIC);
    
    echo '<pre>';
    print_r($dizi);
    
    /*
    Çıktı:
    
    Array
    (
    [0] => Array
    (
    [customerName] => Hasan Kelat
    [customerPhone] => 5555555555
    [Difference] => 125
    )
    
    [1] => Array
    (
    [customerName] => Cenk Celal
    [customerPhone] => 111111111
    [Difference] => 114
    )
    
    )
    */
    ?>
    Teşekkürler hocam çözüldü problem