2010-08-20 5 views
1

Y at-il un moyen de tri "personnalisé" d'un tableau? Par exemple, si je les numéros suivants:Comment trier un tableau PHP?

$array = array('0' => 1, '1' => 2, '2' => 3); 

Je voudrais à les commander de cette façon:

$array = array('0' => 2, '1' => 1, '2' => 3); 

Comment puis-je faire ceci ou est-il pas possible? Je veux fondamentalement lister ce tableau dans un champ de base de données pour chaque utilisateur, mais chaque commande sera différente selon la façon dont l'utilisateur trie le tableau.

Merci, Jake

+0

Quelle est la logique de commande? Qu'est-ce qui détermine si une valeur est avancée ou reculée? – Teekin

Répondre

4

Vous pouvez utiliser

  • usort-Trie un tableau par des valeurs en utilisant une fonction de comparaison définie par l'utilisateur ou
  • uksort-Trie un tableau par touches en utilisant une fonction de comparaison définie par l'utilisateur ou
  • uasort-Trier un tableau avec une fonction de comparaison définie par l'utilisateur et maintenir l'association des index

Chacun d'eux accepte un tableau et un user-defined comparison function aka callback. Ce que vous mettez dans la fonction de comparaison dépend de vous. Depuis PHP5.3, vous pouvez également utiliser SplHeaps to create ordered collections.

+0

Merci! Je vais regarder dans ces :) – Jake

0

vous pouvez également jeter un oeil à array_multisort()

0

Il pourrait être préférable de laisser la base de données trier le tableau sur la récupération avec les paramètres des utilisateurs. Je pense que c'est presque toujours préférable au tri en PHP.

edit: J'ai oublié que le tableau est probablement stocké en tant qu'objet unique, de sorte que la base de données le gère simplement comme un objet et non comme un tableau. Pour activer encore (serveur de base de données) Serverside le tri, les tableaux peuvent également être exprimées sous forme de tableaux séparés:

userID: index0 userID: index1 etc ...

mais cela pourrait donner trop de données au-dessus.