ciddi boyutlu bir dizi sıralama php

1 Cevap php

Ben php.net ve burada etrafa sonra, ben o zaman usort üzerinden arayabilecek bir işlevi yazmak gerektiğini olsun, çok boyutlu bir nesneyi sıralamak için çalışıyorum ve. Ben sözdizimi ile bazı sorun yaşıyorum. Ben hiç daha önce karmaşık bir şey yazılır, ve onu anlamaya çalışıyorum bir Mindbender gibi hissediyor değil ...

Ben bu yazının sonunda yayınlanan dizi ile çalışıyorum. Ben yinelenen [n] değerleri filtrelemek istiyorum. Fakat, ve bu benim için, ben küçük [d] değere sahiptir [n] değerini tutmak istiyorum zor bir parçasıdır.

Ben var ise, (ve bu basitleştirilmiş bir örnektir, gerçek dizi, bu yazının sonunda):

Array ( 

[7777] => Array 
            ( [0] => Array
                ( [n] => '12345' [d] => 1 ) 
              [1] => Array
                ( [n] => '67890' [d] => 4 )
            )

[8888] => Array
            ( [2] => Array
                ( [n] => '12345' [d] => 10 )
              [3] => Array
                ( [n] => '67890' [d] => 2 )
            )
)

Ben bu kadar rüzgar böylece ben, [d] değerine göre yinelenen [n] değerleri filtrelemek istiyorum:

Array ( 

[7777] => Array 
            ( [0] => Array
                ( [n] => '12345' [d] => 1 ) 
            )

[8888] => Array
              [3] => Array
                ( [n] => '67890' [d] => 2 )
            )
)

Ben php.net yayınlanan fonksiyon cmp örneğin farklı varyasyonlarını yazma denedim, ama ben iş için herhangi almak mümkün olmamıştır, ve ben onların örneğini kullanarak çapraz nasıl tamamen açık değilim çünkü düşünüyorum ...

Denedim:

function cmp($a, $b) 
{
    if($a['n'] == $b['n'])
    {
        if($a['d'] == $b['d'])
        {
            return 0;
        }
    }
    return ($a['n'] < $b['n']) ? -1 : 1;
}

Ama, gerçekten hiç işe yaramadı ki ... Neyse, işte ben Yardım ... ile çalışmak için çalışıyorum gerçek dizisi büyük beğeni topluyor var!

Array
(
    [32112] => Array
        (
            [0] => Array
                (
                    [n] => '02124'
                    [d] => '0'
                )

            [1] => Array
                (
                    [n] => '02124'
                    [d] => '0.240101905123744'
                )

            [2] => Array
                (
                    [n] => '11050'
                    [d] => '0.441758632682761'
                )

            [3] => Array
                (
                    [n] => '02186'
                    [d] => '0.317514080260304'
                )
        )
    [43434] => Array
        (
            [4] => Array
                (
                    [n] => '02124'
                    [d] => '5.89936971664429e-05'
                )

            [5] => Array
                (
                    [n] => '02124'
                    [d] => '0.145859264792549'
                )

            [6] => Array
                (
                    [n] => '11050'
                    [d] => '0.327864593457739'
                )

            [7] => Array
                (
                    [n] => '11050'
                    [d] => '0.312135345168295'
                )
          )
)

1 Cevap

Eğer gerçekten filtreleme kadar sıralama değil. N / d değerleri saklamak ve uygulanabilir olduğunda unsetting sonra karşılaştırarak diziler aracılığıyla için isteyeceksiniz.