Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> nietypowe sortowanie tablicy, jak napisać funkcję usort?
Civil
post 2.09.2007, 20:47:13
Post #1





Grupa: Zarejestrowani
Postów: 86
Pomógł: 1
Dołączył: 19.09.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Witam, mam tablicę, do której trafią wartości w trzech formatach:
2121 (sama liczba)
2121-1 (liczba - liczba)
121-1212-1211 (liczba - liczba - liczba)

w jaki sposób posortować tą tablicę aby została posortowana wg pierwszej liczby (bez znaczenia czy dalej jest myślnik)

np. dla 4 wartości:
2121
124-2
150-1245-1265
134

wyskoczyło by

124-2
134
150-1245-1265
2121

?

Pozdrawiam.
Go to the top of the page
+Quote Post
Hazel
post 2.09.2007, 20:56:02
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nie musisz usortem, to nie jest szczególnie przydatna funkcja...
  1. <?php
  2. $tbl = array();
  3. foreach ($tablica as $zmienna)
  4. {
  5. $srt = explode ('-', $zmienna);
  6. array_push ($tbl, $srt[0]);
  7. }
  8. sort($tbl);
  9. ?>


W przykładzie Twoją bazową tablicą jest $tablica, więc nie musisz się bać, że nie odzyskasz już starej tablicy - ona pozostaje bez zmian.

Ten post edytował Hazel 2.09.2007, 20:57:32


--------------------
Go to the top of the page
+Quote Post
Neojawor
post 2.09.2007, 20:57:46
Post #3





Grupa: Zarejestrowani
Postów: 106
Pomógł: 1
Dołączył: 2.12.2005
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


po stronie PHP zrobiłbym to tak, że explodowałbym te rekordy znakiem "-" i sortował tylko te pierwsze wyrazy. Po posortowaniu trzeba by połączyć właściwie te rozdzielone wyrazy. Nie napiszę tego, bo nie mam czasu, ale ideowo tak to widzę. Po stronie SQL nie mam pojęcia jak to zrobić, ale możesz poszukać coś o funkcjach pobierających tylko kilka pierwszych znaków danego rekordu (o ile takie istnieją) i wtedy sortować.
A tak nawiasem mówiąc to przechowywanie danych w taki sposób oznacza, że masz bazę nieznormalizowaną - czytaj tutaj
Go to the top of the page
+Quote Post
Hazel
post 2.09.2007, 21:01:10
Post #4





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


A gdzie on napisał, że te dane przechowuje w bazie? tongue.gif
Czy ja już ślepy jestem?


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 6.07.2025 - 16:41