![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 7 Dołączył: 22.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Jak w PHP posortować tablice według pewnego "wzorca" Powiedzmy że do bazy zapisał mi się pewien ciąg ID o pewnej kolejnosci: 1,4,56,2,8 Pobieram to z bazy w taki sposób: ... WHERE id IN(1,4,56,2,8) na moje nieszczęście wyniki śa pobierane i sortowane według id a chce osiągnąć wynik sortowania taki jak w ciągu array( [0] => array( id => 1, ) ) |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Witaj,
To nie takie łatwe... jeśli tych id masz mało to jeszcze można się pokwapić o coś takiego:
-------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Prawdopodobnie najzwięźlejszym, najczytelniejszym i najłatwiejszym w utrzymaniu będzie:
Przy (raptem) dziesiątkach czy setkach wyników do posortowania różnice w wydajności pomiędzy różnymi rozwiązaniami będą pomijalne. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
@Crozin - fajne to to
![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 141 Pomógł: 7 Dołączył: 22.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Innym oczywiście tez dziękuje ale to rozwiązanie było najkrótsze i nie wymaga generowania nowych ciągów z CASE Musisz tylko pamiętać, że zarówno FIELD jak i FIND_IN_SET zwrócą 0 dla nieistniejących wartości. Tak więc jeśli w swoim zapytaniu dodasz jakiś warunek OR i w wyniku dostaniesz też ID spoza zakresu uwzględnionego w tych metodach, to takie rekordy zostaną posortowane na początek. Wyjście jest banalne. Zamiast robić:
Ale to taka mała uwaga na przyszłość ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 20:18 |