Değer Sıralama Çok boyutlu Array [çoğaltmak]

4 Cevap php

Possible Duplicate:
How do I Sort a Multidimensional Array in PHP

Nasıl ben "düzen" anahtarının değerine göre bu dizi sıralayabilirsiniz? Değerler şu anda sıralı olsa bile, her zaman olmaz.

Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Flower
            [order] => 3
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Free
            [order] => 2
        )

    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Ready
            [order] => 1
        )
)

4 Cevap

Deneyin bir usort: Eğer (PHP 5.3 öncesi) Henüz anonim işlevlerine erişmek yoksa, önce bir sıralama işlevini tanımlamak gerekir:

function sortByOrder($a, $b) {
    return $a['order'] - $b['order'];
}

usort($myArray, 'sortByOrder');

PHP 5.3 için Güncellendi:

usort($myArray, function($a, $b) {
    return $a['order'] - $b['order'];
});

Ben bu işlevi kullanın:

function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) {
    $sort_col = array();
    foreach ($arr as $key=> $row) {
        $sort_col[$key] = $row[$col];
    }

    array_multisort($sort_col, $dir, $arr);
}


array_sort_by_column($array, 'order');

Ben genellikle usort kullanmak ve kendi karşılaştırma işlevi geçmektedir. Bu durumda, çok basittir:

function compareOrder($a, $b)
{
  return $a['order'] - $b['order'];
}

usort($array, 'compareOrder');
$sort = array();
$array_lowercase = array_map('strtolower', $array_to_be_sorted);
array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $alphabetically_ordered_array);

Bu, hem üst ve alt harf alfabe ilgilenir.