KWALIFIKACJA INF3 - WRZESIEŃ 2014

PYTANIE NR 21.
Która z wymienionych funkcji sortowania, wykorzystywana w języku PHP, sortuje tablicę asocjacyjną według indeksów?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
ksort() sortuje tablicę asocjacyjną według kluczy (indeksów), zachowując powiązania klucz=>wartość. Funkcje sort() i rsort() sortują po wartościach i zwykle ponownie indeksują klucze liczbowe, a asort() sortuje po wartościach, ale zachowuje klucze.

Pełne wyjaśnienie:

W PHP tablica asocjacyjna przechowuje pary klucz => wartość. Jeśli celem jest uporządkowanie elementów według kluczy (czyli indeksów tablicy), właściwą funkcją jest ksort(). Sortuje ona elementy rosnąco na podstawie kluczy i zachowuje skojarzenia klucz–wartość.

Dlaczego pozostałe opcje nie pasują?

  • rsort() sortuje tablicę malejąco, ale kryterium stanowią wartości, nie klucze. Dodatkowo w typowym użyciu na tablicach indeksowanych powoduje ponowne nadanie indeksów liczbowych (reindeksowanie), więc nie służy do porządkowania po kluczach tablic asocjacyjnych.
  • asort() sortuje tablicę asocjacyjną, ale również według wartości. Jego cechą jest zachowanie powiązań kluczy z wartościami, jednak kryterium sortowania nadal są wartości, a nie klucze.
  • sort() sortuje wartości rosnąco i zwykle reindeksuje elementy (zwłaszcza przy indeksach liczbowych). To sprawia, że nie spełnia wymagania "według indeksów/kluczy".

Wskazówka egzaminacyjna: zapamiętaj, że litera k w ksort oznacza keys (klucze), a litera a w asort często kojarzona jest z sortowaniem tablicy asocjacyjnej, ale nadal po wartościach. Zanim wybierzesz odpowiedź, ustal: co jest sortowane (klucze czy wartości) oraz czy mają zostać zachowane klucze.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Tablica asocjacyjna w PHP to tablica, w której elementy mają klucze (np. tekstowe) powiązane z wartościami, czyli zapis typu klucz => wartość. Ułatwia to przechowywanie danych opisowych, np. ustawień, mapowań i słowników.
Do sortowania tablicy po kluczach służy ksort(). Funkcja porządkuje elementy według kluczy rosnąco, zachowując powiązania klucz–wartość, co jest typowe dla pracy z tablicami asocjacyjnymi.
sort() sortuje tablicę według wartości, a nie według kluczy. Dodatkowo często dochodzi do reindeksowania (nadania nowych indeksów liczbowych), więc po wykonaniu sort() możesz stracić oryginalne klucze, które w tablicy asocjacyjnej są kluczowe.
ksort() sortuje po kluczach, a asort() sortuje po wartościach, jednocześnie zachowując skojarzenie kluczy z wartościami. W praktyce wybór zależy od tego, czy porządek ma wynikać z identyfikatorów (kluczy), czy z danych (wartości).
rsort() sortuje elementy malejąco według wartości. W typowych zastosowaniach na tablicach indeksowanych powoduje ponowne indeksowanie kluczy liczbowych, więc nie jest to funkcja przeznaczona do sortowania tablic asocjacyjnych według kluczy.
ksort() przydaje się, gdy chcesz uporządkować dane słownikowe według identyfikatorów, np. sortować tablicę ustawień, mapowań lub listę parametrów według nazw kluczy przed wyświetleniem, logowaniem, porównaniem struktur albo serializacją danych.
Najczęstsze pułapki to mylenie sortowania po kluczach z sortowaniem po wartościach oraz pomijanie informacji o zachowaniu kluczy. Uważaj też na funkcje, które reindeksują tablicę, bo mogą zmienić lub usunąć pierwotne klucze.
W praktyce w PHP często używa się tych pojęć zamiennie: każdy element tablicy ma identyfikator dostępu, czyli klucz (bywa nazywany indeksem). Różnica pojawia się w potocznym języku: "indeks" kojarzy się z liczbą, a "klucz" także z napisem.
Najprościej wypisz tablicę przed i po sortowaniu (np. var_dump/print_r) i porównaj klucze. Jeśli po sortowaniu widzisz klucze 0,1,2… zamiast pierwotnych, to znaczy, że doszło do reindeksowania i trzeba użyć funkcji zachowującej klucze lub sortującej po kluczach.
Zrób krótką ściągę: które funkcje sortują po kluczach, a które po wartościach, oraz czy zachowują klucze. Przećwicz na 2–3 tablicach (klucze tekstowe i liczbowe) i sprawdź wynik w print_r, bo to utrwala skutki działania funkcji.
info

Około 68% zdających odpowiada poprawnie na to pytanie. średnie

Według specjalistów z branży: "ksort() sortuje tablicę asocjacyjną według kluczy (indeksów), zachowując powiązania klucz=>wartość."

Źródła:

  • PHP Manual: ksort — Sort an array by key, https://www.php.net/manual/en/function.ksort.php - accessed 2026-02-28
  • PHP Manual: asort — Sort an array and maintain index association, https://www.php.net/manual/en/function.asort.php - accessed 2026-02-28
  • PHP Manual: sort — Sort an array, https://www.php.net/manual/en/function.sort.php - accessed 2026-02-28

Materiały:

  • Dokumentacja PHP: funkcje sortowania tablic (ksort, asort, sort, rsort)
  • Ćwiczenia: porównanie działania sort/asort/ksort na tablicach z kluczami tekstowymi i liczbowymi
  • Notatka własna: tabela "funkcja → sortuje po → zachowanie kluczy → kierunek sortowania"

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego