Comment puis-je trier ce tableau en fonction de la valeur de la clé "order"? Même si les valeurs sont actuellement séquentielles, elles ne le 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
)
)
Réponses:
Essayez un usort , si vous êtes encore sur PHP 5.2 ou antérieur, vous devrez d'abord définir une fonction de tri:
À partir de PHP 5.3, vous pouvez utiliser une fonction anonyme:
Et enfin avec PHP 7, vous pouvez utiliser l' opérateur de vaisseau spatial :
Pour étendre cela au tri multidimensionnel, référencez les deuxième / troisième éléments de tri si le premier est nul - mieux expliqué ci-dessous. Vous pouvez également l'utiliser pour trier les sous-éléments.
Si vous devez conserver les associations de touches, utilisez
uasort()
- voir la comparaison des fonctions de tri des tableaux dans le manuella source
uasort()
si vous souhaitez conserver les clés du tableau.la source
J'utilise cette fonction:
la source
array_multisort
et n'a donc pas besoin de préallouer$sort_col
, économisant du temps et de la mémoire .&$arr
au lieu de juste$arr
?J'utilise habituellement usort et passe ma propre fonction de comparaison. Dans ce cas, c'est très simple:
En PHP 7 en utilisant l'opérateur de vaisseau spatial:
la source
$a['order']
est 3 et$b['order']
est 6, je reviendrai -3. Correct?Une approche pour y parvenir serait la suivante
Résultat:
la source
Pour trier le tableau selon la valeur de la clé "title", utilisez:
strcmp compare les chaînes.
uasort () conserve les clés du tableau telles qu'elles ont été définies.
la source
Cela prend en charge les alphabets majuscules et minuscules.
la source
Utiliser
array_multisort()
,array_map()
DEMO
la source
array_multisort
référence son premier paramètre.L'approche la plus flexible serait d'utiliser cette méthode
Voici pourquoi:
Vous pouvez trier par n'importe quelle clé (également imbriquée comme
'key1.key2.key3'
ou['k1', 'k2', 'k3']
)Fonctionne à la fois sur des tableaux associatifs et non associatifs (
$assoc
indicateur)Il n'utilise pas de référence - retourne un nouveau tableau trié
Dans votre cas, ce serait aussi simple que:
Cette méthode fait partie de cette bibliothèque .
la source
Avouons-le: php n'a PAS une simple fonction prête à l'emploi pour gérer correctement chaque scénario de tri de tableau.
Cette routine est intuitive, ce qui signifie un débogage et une maintenance plus rapides:
la source
global
est un énorme drapeau rouge et est généralement déconseillée . Pourquoi estmysql_fetch_array
démontré pour cette question au lieu du tableau source de l'OP, et qu'il n'y a aucune explication de ce que fait votre code et ce que l'on peut attendre du résultat? Dans l'ensemble, il s'agit d'une approche très complexe pour atteindre le résultat final souhaité.global
see: 3v4l.org/FEeFC Cela produit une variable explicitement définie, plutôt qu'une variable qui peut être modifiée et accessible globalement.Vous pouvez également trier un tableau multidimensionnel pour plusieurs valeurs comme
avec
Sortie utilisant
print_r($arr)
:PS) en utilisant strcmp serait une bonne option pour comparer les chaînes.
la source