trie un tableau basé sur la date en php
Array
(
[0] => Array
(
[dateTime] => 2011-10-18 0:0:00
[chanl1] => 20.7
[chanl2] => 45.4
[chanl3] =>
)
[1] => Array
(
[dateTime] => 2011-10-18 0:15:00
[chanl1] => 20.7
[chanl2] => 45.4
[chanl3] =>
)
[2] => Array
(
[dateTime] => 2011-10-18 00:14:00
[chanl1] => 20.7
[chanl2] => 33.8
[chanl3] =>
)
[3] => Array
(
[dateTime] => 2011-10-18 00:29:00
[chanl1] => 20.6
[chanl2] => 33.9
[chanl3] =>
)
Je veux trier le tableau ci-dessus basé sur le [dateTime], le résultat final devrait être:
Array
(
[0] => Array
(
[dateTime] => 2011-10-18 0:0:00
[chanl1] => 20.7
[chanl2] => 45.4
[chanl3] =>
)
[1] => Array
(
[dateTime] => 2011-10-18 00:14:00
[chanl1] => 20.7
[chanl2] => 33.8
[chanl3] =>
)
[2] => Array
(
[dateTime] => 2011-10-18 0:15:00
[chanl1] => 20.7
[chanl2] => 45.4
[chanl3] =>
)
[3] => Array
(
[dateTime] => 2011-10-18 00:29:00
[chanl1] => 20.6
[chanl2] => 33.9
[chanl3] =>
)
Est-ce que quelqu'un sais comment faire? Merci!
OriginalL'auteur Acubi | 2011-11-14
Vous devez vous connecter pour publier un commentaire.
Utilisation
usort()
function personnalisé comparateur:DateTime classe a surchargé les opérateurs de comparaison (
<
,>
,==
).C'est une idée fausse commune que usort a retourner
-1,0,1
. Comme le manuel indique: La fonction de comparaison doit retourner un entier inférieur, égal ou supérieur à zéro si le premier argument est respectivement inférieure, égale, ou supérieure à la seconde. et cela signifie que toute valeur<=>0
.Ouais, je sais que le fait, cependant, si nous avons quelque chose qui n'est pas un nombre (DateTime dans ce cas) c'est une pratique courante pour revenir
±1
.N'est-ce pas le ternaire à l'envers? Sauf s'il y a quelque chose de stupide que je suis absent, si la première valeur est inférieure à la seconde, alors vous devriez retourner une valeur <0. Je pense qu'il devrait être
return $ad < $bd ? -1 : 1;
Remarque: l'interrupteur -1 et 1 autour pour modifier l'ordre de descendre
OriginalL'auteur Crozin
À l'aide de
uasort()
avec un tri personnalisé en fonction de rappel doit le faire:uasort()
préserve votre de la matrice de touches, vous pouvez utiliserusort()
à la place si vous n'avez pas besoin que cela se produise.<
de l'opérateur.pourquoi?...
Parce que vous êtes en supposant un format de date spécifique, Crozins réponse est beaucoup plus utilisable.
oui, vous avez raison que je suis en supposant qu'elle est dans le format qui leur est donnée dans l'échantillon de données. Pourquoi ne serait-il pas?
OriginalL'auteur Clive
Pour la performance, cette méthode à l'aide array_multisort est très efficace:
OriginalL'auteur User4407
Utilisation array_multisort :
OriginalL'auteur
Pour tableau php et de l'objet de cet exemple est utile pour le tri...
Pour datetime décroissant:
Pour datetime ascendant:
OriginalL'auteur Mani