web-dev-qa-db-fra.com

Garder la clé d'index du tableau lors du tri d'un tableau multidimensionnel avec PHP

array(10) { 
[1019]=> array(3) { ["quantity"]=> int(0) ["revenue"]=> int(0) ["seller"]=> string(5) "Lenny" } 
[1018]=> array(3) { ["quantity"]=> int(5) ["revenue"]=> int(121) ["seller"]=> string(5) "Lenny" } 
[1017]=> array(3) { ["quantity"]=> int(2) ["revenue"]=> int(400) ["seller"]=> string(6) "Anette" } 
[1016]=> array(3) { ["quantity"]=> int(25) ["revenue"]=> int(200) ["seller"]=> string(6) "Samuel" } 
[1015]=> array(3) { ["quantity"]=> int(1) ["revenue"]=> int(300) ["seller"]=> string(6) "Samuel" } 
[1014]=> array(3) { ["quantity"]=> string(2) "41" ["revenue"]=> string(5) "18409" ["seller"]=> string(6) "Samuel" }
}

Je travaille avec le tableau ci-dessus. Ce tableau multidimensionnel est appelé $stats.

Je voudrais trier ce tableau, par la quantité.

Pour que le tableau multidimensionnel ait son premier tableau 1016 puis 1018, 1017 et ainsi de suite.

Je l'ai fait par:

                function compare($x, $y) {
                    if ( $x['quantity'] == $y['quantity'] )
                    return 0;
                    else if ( $x['quantity'] > $y['quantity'] )
                    return -1;
                    else
                    return 1;
                }
                usort($stats, 'compare');

Ce qui fonctionne très bien!

Mais le problème est que l'index du tableau de têtes (les ID, 1019, 1018, 1017, etc.) disparaît lors de son tri. Je voudrais conserver les index des tableaux.

Comment puis-je faire ceci?

31
Karem

Je pense que vous avez besoin de uasort -

DE PHP DOC

Trier un tableau avec une fonction de comparaison définie par l'utilisateur et maintenir l'association d'index

Exemple

  uasort($stats, 'compare');
91
Baba