sort w PHP
Funkcja sort w PHP umożliwia sortowania elementów tablicy. Funkcję tę stosujemy do tablic indeksowanych numerycznie, a nie do tablic asocjacyjnych.
Składnia
sort(array $tablica [, int $flaga]):bool
Parametry
Parametr | Opis |
$tablica | Tablica przeznaczona do posortowania. |
$flaga | Flaga, która ustawia tryb sortowania. Są możliwe następujące wartości predefiniowane:
|
Jeśli porównywane elementy tablicy okazują się równe, to zachowują swoją pierwotną kolejność. Przed PHP 8 ich kolejność w posortowanej tablicy nie była zdefiniowana.
Uwaga: Ta funkcja przypisuje nowe klucze do elementów tablicy.
Przykład 1
<?php $tablica1 = array(1,22,31,42,51,112,21,-1,331,42,61,72,83);
echo 'Dana jest tablica:<br>';
foreach ($tablica1 as $val) {
echo "{$val}, ";
}
sort($tablica1);
echo '<br>Posortowana tablica:<br>';
foreach ($tablica1 as $val) {
echo "{$val}, ";
} ?>
W powyższym przykładzie zdefiniowaliśmy tablicę liczb. Wyświetliliśmy elementy tej tablicy za pomocą pętli foreach. Następnie użyliśmy funkcji sortowania sort, która posortowała numerycznie elementy tablicy (z uwagi na wartości tablicy typu int) i ponownie wyświetliliśmy elementy tej samej tablicy.
Przykład 2
<?php $tablica1 = array("Ola","Ala","Janek","Tomek","Jacek");
echo 'Dana jest tablica:<br>';
foreach ($tablica1 as $val) {
echo "{$val}, ";
}
sort($tablica1);
echo '<br>Posortowana tablica:<br>';
foreach ($tablica1 as $val) {
echo "{$val}, ";
} ?>
W powyższym przykładzie zdefiniowaliśmy tablicę tekstową. Wyświetliliśmy elementy tej tablicy za pomocą pętli foreach. Następnie użyliśmy funkcji sortowania sort, która posortowała alfabetycznie elementy tablicy (z uwagi na wartości tablicy typu string) i ponownie wyświetliliśmy elementy tej samej tablicy.
Sortowanie polskich znaków
A co z polskimi literami? Niestety zwykłe użycie funkcji sort nie da spodziewanego efektu posortowania tablicy według polskiego alfabetu. Można jednak temu zaradzić. Oto rozwiązanie:
Przykład 3
<?php $tablica1 = array("żubr","zebra","świstak","suseł","ćma","cyweta");
echo 'Dana jest tablica:<br>';
foreach ($tablica1 as $val) {
echo "{$val}, ";
}
setlocale(LC_ALL, 'pl_PL');
sort($tablica1, SORT_LOCALE_STRING);
echo '<br>Posortowana tablica:<br>';
foreach ($tablica1 as $val) {
echo "{$val}, ";
} ?>
Najpierw trzeba ustawić za pomocą funkcji setlocale ustawienia lokalne (narodowe), a potem jako flagi sortowania użyć flagi SORT_LOCALE_STRING.
Aby posortować tablice w innym porządku lub tablice asocjacyjne należy użyć innych funkcji sortowania (rsort, asort, ksort, usort, uasort, uksort).
© medianauka.pl, 2021-11-20, A-4263
Data aktualizacji artykułu: 2024-06-29