Mam tablicę taką jak:
Array
(
[0] => Array
(
[id] => 2
[type] => comment
[text] => hey
[datetime] => 2010-05-15 11:29:45
)
[1] => Array
(
[id] => 3
[type] => status
[text] => oi
[datetime] => 2010-05-26 15:59:53
)
[2] => Array
(
[id] => 4
[type] => status
[text] => yeww
[datetime] => 2010-05-26 16:04:24
)
)
Czy ktoś może zasugerować sposób sortowania / porządkowania tego na podstawie elementu datetime?
$a
i$b
będzie przechowywać tablice w środku$array
. Upewnij się, że nazwa funkcji nie została błędnie wpisana.usort($array, array($this, "date_compare"))
abyusort()
wiedzieć, że jest to funkcja / metoda klasy. Zobacz też: php.net/manual/en/…To powinno działać. Przekonwertowałem datę na czas uniksowy za pomocą strtotime.
Wersja jednowierszowa korzystałaby z wielu metod tablicowych:
źródło
Z php7 możesz użyć operatora statku kosmicznego :
źródło
http://us2.php.net/manual/en/function.array-multisort.php patrz trzeci przykład:
fyi, użycie uniksa (sekundy od 1970) lub znacznika czasu mysql (YmdHis - 20100526014500) byłoby łatwiejsze dla parsera, ale myślę, że w twoim przypadku nie ma to znaczenia.
źródło
Sortowanie tablicy rekordów / assoc_arrays według określonego pola datetime mysql i kolejności:
źródło
str_to_upper
sięstrtoupper
.źródło
Możesz po prostu rozwiązać ten problem za pomocą usort () z funkcją wywołania zwrotnego. Nie ma potrzeby pisania żadnej funkcji niestandardowej.
źródło
Natknąłem się na ten post, ale chciałem posortować według czasu podczas zwracania przedmiotów z mojej klasy i otrzymałem błąd.
Więc badam stronę php.net i robię to:
Bardzo przydatne przykłady można znaleźć na stronie PHP.net
Moja tablica wyglądała tak:
źródło
W przypadku
'd/m/Y'
dat:gdzie
$i
jest indeks tablicyźródło
Dla tych, którzy wciąż szukają rozwiązania tego problemu wewnątrz klasy z funkcją sortByDate, zobacz poniższy kod
źródło