Dizi elemanları tarafından çokboyutlu Sıralama bir dizi

2 Cevap php

Diyelim ki ben burada başladım diyelim:

$arr[0] = array('a' => 'a', 'int' => 10);
$arr[1] = array('a' => 'foo', 'int' => 5);
$arr[2] = array('a' => 'bar', 'int' => 12);

Ve ben burada almak istiyorum:

$arr[0] = array('a' => 'foo', 'int' => 5);
$arr[1] = array('a' => 'a', 'int' => 10);
$arr[2] = array('a' => 'bar', 'int' => 12);

Nasıl bu unsurların 'elemanları tarafından bir dizideki öğeleri sıralayabilirsiniz?

(Ben onları anlamaya ve süper kolay görünüyor kadar) (-_-) işleyebilir boyutlu diziler hep beynimin daha biraz daha fazla gibi hissediyorum

2 Cevap

Eğer "int" anahtarının değeri ile bunları sipariş etmek istiyor musunuz?

Bir geri arama fonksiyonu ile uasort kullanın:

function compare_by_int_key($a, $b) {
    if ($a['int'] == $b['int']) {
        return 0;
    }
    return ($a['int'] < $b['int']) ? -1 : 1;
}
uasort($arr, "compare_by_int_key");

ilk kapalı, sen [1] iki dizi $ için bir değer atamak çünkü şu anda sadece baz dizisindeki iki unsurlar var çünkü dizi başvurmak için kullandığınız dizin değişkeni değiştirmek için unutma.

İşte kod:

// for the number of elements in the base array
for ( $eye = 0; $eye < sizeOf($arr); $eye += 1) {
    // grab each element in the array
    for ( $jay = 0; $jay < sizeOf($arr); $jay += 1) {
        // if the second element of the base array's current element
        // is greater than the next one
        if ( $arr[$jay][1] > $arr[$jay + 1][1] ) {
            // then swap those values
            $temp = $arr[$jay]
            $arr[$jay] = $arr[$jay+1]
            $arr[$jay+1] = $temp
        }
    }
}

Eğer hata ayıklama küçük bir miktar yapmak zorunda kalabilirsiniz bu yüzden bu kodu test etmedi aklınızda tutun. Bu size istediğiniz şekilde sıralamak gerekir, orada bu aramayı gerçekleştirmek için daha hızlı bir yolu vardır ama bu simplist ve sana comment kodunda bazı açıklama vermeye çalıştım.

Hope this helps, Gale