Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie tablicy wg własnego wzoru
netvalue
post
Post #1





Grupa: Zarejestrowani
Postów: 199
Pomógł: 2
Dołączył: 9.06.2008

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


Witam

  1.  
  2. array(1) { ["myarr"]=> array(5) {
  3. [0]=> array(5) { ["symbol"]=> string(6) "EUR" ["desc"]=> string(6) "da" }
  4. [1]=> array(5) { ["symbol"]=> string(6) "USD" ["desc"]=> string(6) "adad" }
  5. [2]=> array(5) { ["symbol"]=> string(6) "CHF" ["desc"]=> string(6) "das23" }
  6. [3]=> array(5) { ["symbol"]=> string(6) "GBP" ["desc"]=> string(6) "dd12" }
  7. [4]=> array(5) { ["symbol"]=> string(6) "NOR" ["desc"]=> string(6) "233" }
  8. }
  9. }
  10.  


potrzebuje posortować ja symbol ale w kolejności takiej:
NOR, USD, EUR, CHF , GBP

Próbowałem z usort ale w tym przypadku chyba sie nie przyda...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
freemp3
post
Post #2





Grupa: Zarejestrowani
Postów: 467
Pomógł: 77
Dołączył: 6.09.2008
Skąd: Miechów / Kraków

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


Na pewno nie zadziała. W zmiennej a oraz b są elementy tablicy, a w Twoim przypadku są to tablice. Instrukcja:
  1. $sizes[$a]

rzutuje tablice w zmiennej a na string czego rezultatem będzie
  1. $sizes['Array']

Po drugie, odejmowanie także nie ma prawa zadziałać. Funkcja ma zwrócić 1 jeśli a jest większe od b, -1 jeśli b jest większe od a lub 0 jeśli a i b są równe.

Aby to rozwiązać należy z zmiennych a i b wczytać wartość kluczy symbol i następnie przy pomocy if-ów porównać wagi tych wartości i zwrócić odpowiednią wartość.
Go to the top of the page
+Quote Post
sowiq
post
Post #3





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(freemp3 @ 6.08.2013, 11:27:11 ) *
Po drugie, odejmowanie także nie ma prawa zadziałać. Funkcja ma zwrócić 1 jeśli a jest większe od b, -1 jeśli b jest większe od a lub 0 jeśli a i b są równe.

Kolego, gwoli ścisłości, nie masz racji. Wartości zwracane to nie "-1", "0", "1", tylko "mniej niż zero", "0", "więcej niż zero". Więc równie dobrze zamiast -1 możesz zwracać -2, -999 czy -312. Ale -0.9 już nie.

Cytat
The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.


Cytat
Caution Returning non-integer values from the comparison function, such as float, will result in an internal cast to integer of the callback's return value. So values such as 0.99 and 0.1 will both be cast to an integer value of 0, which will compare such values as equal.


Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 21:40