1316 votes

Trier un Tableau Multi-dimensionnel en Valeur

Double Possible:
Comment puis-je Trier un Tableau Multidimensionnel en PHP

Comment puis-je trier ce tableau par la valeur de la "commande" de la clé? Même si les valeurs sont actuellement séquentielle, ils ne seront pas toujours.

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
        )
)

1987voto

christian studer Points 5948

Essayez un usort: Si vous n'avez pas accès à des fonctions anonymes (Avant de PHP 5.3), vous devrez définir une fonction de tri d'abord:

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

usort($myArray, 'sortByOrder');

Mise à jour de PHP 5.3:

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

297voto

Lohoris Points 5349
function aasort (&$array, $key) {
    $sorter=array();
    $ret=array();
    reset($array);
    foreach ($array as $ii => $va) {
        $sorter[$ii]=$va[$key];
    }
    asort($sorter);
    foreach ($sorter as $ii => $va) {
        $ret[$ii]=$array[$ii];
    }
    $array=$ret;
}

aasort($your_array,"order");

292voto

Tom Haigh Points 32314

J'utilise cette fonction :

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');

85voto

Jan Fabry Points 3977

J'ai l'habitude d'utiliser usort, et passe ma propre fonction de comparaison. Dans ce cas, c'est très simple:

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

usort($array, 'compareOrder');

18voto

Nitrodbz Points 144
$sort = array();
$array_lowercase = array_map('strtolower', $array_to_be_sorted);
array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $alphabetically_ordered_array);

Cela prend en charge à la fois les majuscules et les minuscules alphabets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X