• 19-04-2015, 20:09:39
    #1
    S.a. arkadaşlar,

    Aşağıdaki şekilde bir dizim var örnek:
    //$deger numeric
    $dizi[0] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '100');
    $dizi[1] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '55');
    $dizi[2] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '45');
    Bu diziyi 'sıralamayuzdesi' anahtarının değerine göre büyükten > küçüğe nasıl sıralarım Tabi dizinin ahantar ve değerleri bozulmayacak şekilde.
  • 19-04-2015, 20:25:50
    #2
    ylv
    Üyeliği durduruldu
    aLKaDraZ adlı üyeden alıntı: mesajı görüntüle
    S.a. arkadaşlar,

    Aşağıdaki şekilde bir dizim var örnek:
    //$deger numeric
    $dizi[0] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '100');
    $dizi[1] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '55');
    $dizi[2] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '45');
    Bu diziyi 'sıralamayuzdesi' anahtarının değerine göre büyükten > küçüğe nasıl sıralarım Tabi dizinin ahantar ve değerleri bozulmayacak şekilde.
    http://php.net/manual/en/function.usort.php

    function cmp($a, $b)
    {
    if ($a['sıralamayuzdesi'] == $b['sıralamayuzdesi']) {
    return 0;
    }
    return ($a['sıralamayuzdesi'] > $b['sıralamayuzdesi']) ? -1 : 1;
    }

    usort($dizi, "cmp");

    kolay gelsin.
  • 19-04-2015, 21:02:57
    #3
    ylv adlı üyeden alıntı: mesajı görüntüle
    http://php.net/manual/en/function.usort.php

    function cmp($a, $b)
    {
    if ($a['sıralamayuzdesi'] == $b['sıralamayuzdesi']) {
    return 0;
    }
    return ($a['sıralamayuzdesi'] > $b['sıralamayuzdesi']) ? -1 : 1;
    }

    usort($dizi, "cmp");

    kolay gelsin.
    Hocam sağolda bu sadece bana -1 veya 1 döndürür ben dizinin sıralanmış şeklini istiyorum. Yani bana büyükten küçüğe dönmüş şekilde gelecek bense foreach ile yazdırmak kalacak diziyi.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 21:02:57 -->-> Daha önceki mesaj 20:41:07 --


    <?php 
    
    $a = 23;
    $b = 24;
    $c = 25;
    
    
    $dizi[0] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '100');
    $dizi[1] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '55');
    $dizi[2] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '45');  
    
    
    $tmpArray = array(); 
     
    foreach($dizi as $key => $value){
     $tmpArray[$key] = $value['sıralamayuzdesi'];
    }
     
    array_multisort($tmpArray, SORT_DESC, $dizi); 
    
    echo '<pre>';
    print_r($dizi);
    echo '</pre>';
    
    
    ?>
    Çıktı
    Array ( [0] => Array ( [a] => 23 [b] => 24 [c] => 25 [sıralamayuzdesi] => 100 ) [1] => Array ( [a] => 23 [b] => 24 [c] => 25 [sıralamayuzdesi] => 55 ) [2] => Array ( [a] => 23 [b] => 24 [c] => 25 [sıralamayuzdesi] => 45 ) )
    Böyle yaptım teşekkürler.
  • 19-04-2015, 21:11:41
    #4
    ylv
    Üyeliği durduruldu
    aLKaDraZ adlı üyeden alıntı: mesajı görüntüle
    Hocam sağolda bu sadece bana -1 veya 1 döndürür ben dizinin sıralanmış şeklini istiyorum. Yani bana büyükten küçüğe dönmüş şekilde gelecek bense foreach ile yazdırmak kalacak diziyi.

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 21:02:57 -->-> Daha önceki mesaj 20:41:07 --


    <?php 
    
    $a = 23;
    $b = 24;
    $c = 25;
    
    
    $dizi[0] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '100');
    $dizi[1] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '55');
    $dizi[2] = array('a' => $a, 'b' => $b, 'c' => $c,'sıralamayuzdesi' => '45');  
    
    
    $tmpArray = array(); 
     
    foreach($dizi as $key => $value){
     $tmpArray[$key] = $value['sıralamayuzdesi'];
    }
     
    array_multisort($tmpArray, SORT_DESC, $dizi); 
    
    echo '<pre>';
    print_r($dizi);
    echo '</pre>';
    
    
    ?>
    Çıktı
    Array ( [0] => Array ( [a] => 23 [b] => 24 [c] => 25 [sıralamayuzdesi] => 100 ) [1] => Array ( [a] => 23 [b] => 24 [c] => 25 [sıralamayuzdesi] => 55 ) [2] => Array ( [a] => 23 [b] => 24 [c] => 25 [sıralamayuzdesi] => 45 ) )
    Böyle yaptım teşekkürler.
    verdiğim kodda bir problem yok.

    usort($dizi, "cmp");

    den sonra

    foreach yapıcaksın. -1 ve 1 dönmez zaten.