Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] ksort(), dlaczego?
Skie
post
Post #1





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

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


Definicja z Manuala PHP:
Sortuje tablicę według klucza zachowując skojarzenia kluczy z danymi. Jest to przydatne głównie w przypadku tablic asocjacyjnych.

Mam taką tablicę:
  1. <?php
  2.     [cos1] => 1,
  3.     [0] => 1,
  4.     [cos2] => 'tekst',
  5.     [1] => 'tekst',
  6.     [cos3] => 4,
  7.     [2] => 4,
  8.     [cos4] => 'lol',
  9.     [3] => 'lol'
  10. )
  11. ?>


Czyli korzystając z powyższej funkcji miałem nadzieję otrzymać coś takiego:
  1. <?php
  2.     [0] => 1,
  3.     [1] => 'tekst',
  4.     [2] => 4,
  5.     [3] => 'lol',
  6.     [cos1] => 1,
  7.     [cos2] => 'tekst',
  8.     [cos3] => 4,
  9.     [cos4] => 'lol'
  10. )
  11. ?>


...a zamiast tego mam coś takiego:

  1. <?php
  2.     [0] => 1,
  3.     [cos1] => 1,
  4.     [cos2] => 'tekst',
  5.     [cos3] => 4,
  6.     [cos4] => 'lol',
  7.     [1] => 'tekst',
  8.     [2] => 4,
  9.     [3] => 'lol'
  10. )
  11. ?>


Problem mam już rozwiązany i nie chcę wiedzieć jak to inaczej zrobić, tylko się zastanawiam czemu ta funkcja tak to dziwnie posortowała? Najpierw 0 potem stringi a potem znowu liczby - Byłbym wdzięczny gdyby mi to ktoś wytłumaczył (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




manual nie gryzie
http://pl.php.net/manual/en/function.ksort.php#85046
Cytat
Be careful when using ksort for mixed type keys!!

......

The reason for that lays in the compare mechanism which would normally just typecast 'first' to an integer or 0 to a string when comparing it to each other. So you have to use SORT_STRING, otherwise you would lose information when 'first' is converted to int.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 14:19