Yüksek noktaları dayalı çok boyutlu dizideki çiftleri çıkarın

1 Cevap php

Ben bir çözüm düşünmeye çalışıyorum beynimi zorluyorum. Ben bir 2d diziden dupes kaldırmak için bol çözüm bulabilirsiniz ama ben bir değer diğerinden daha düşüktür dupes kaldırmak gerekir. İşte dizidir:

Array
(
    [basketball] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 2
                    [username] => Beans
                    [points] => 30
                )

            [1] => stdClass Object
                (
                    [id] => 314
                    [username] => slights
                    [points] => 20
                )

            [2] => stdClass Object
                (
                    [id] => 123
                    [username] => gibb54
                    [points] => 5
                )

        )

    [soccer] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 2
                    [username] => Beans
                    [points] => 95
                )

            [1] => stdClass Object
                (
                    [id] => 49
                    [username] => sans
                    [points] => 65
                )

            [2] => stdClass Object
                (
                    [id] => 122
                    [username] => peano
                    [points] => 50
                )

            [3] => stdClass Object
                (
                    [id] => 174
                    [username] => fordb
                    [points] => 30
                )

            [4] => stdClass Object
                (
                    [id] => 112
                    [username] => danc
                    [points] => 30
                )


        )

)

Gördüğünüz gibi, kullanıcı kimliği 2, Fasulye basketbol ve futbol hem ilk seçimidir. Bu futbol için daha fazla puana sahip olarak, ben kimliği 314 yapmak için basketbol için kendi girdisini kaldırmak gerekir, 0 değeri slights.

Kullanıcı iki birincil dizi değerlerin herhangi 0 değer kadar ben sürekli bunu yapmak gerekir.

Ben foreach çözümler çeşitli kombinasyonları denedim ama hiçbir yerde alamıyorum. Ben bir süre döngü daha uygun olacağını düşündüm ama test etmek için ne durumda bilmiyorum.

Herhangi bir fikir lütfen?

1 Cevap

Verilerini döngü olacak ve tuşları, kullanıcı kimliği şunlardır sözlüğü oluşturmak ve değerleri ekteki spor ile uygun kullanıcı nesnelerdir. Sonra burada her kullanıcı koymak belirlemek için spor verileri kullanarak bu de-aldatıldığını dizi döngü tarafından örnek veri dizi yapısını yeniden yapabilirsiniz.

De Sazan dizi oluşturmak için, gibi bir şey kullanın:

$deDupedData = array();
foreach ($data as $sport => $users) {
    foreach ($users as $user) {
        if (isset($deDupedData[$user->id])) {
            if ($user->points > $deDupedData[$user->id]->points) {
                $deDupedData[$user->id]->sport = $sport;
                $deDupedData[$user->id]->points = $user->points;
            } 
        } else {
            $modifiedUser = $user;
            $modifiedUser->sport = $sport;
            $deDupedData[$user->id] = $modifiedUser;
        }
    }
}  
// Now reconstruct your array...