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

ParametrOpis
$tablica Tablica przeznaczona do posortowania.
$flaga

Flaga, która ustawia tryb sortowania. Są możliwe następujące wartości predefiniowane:

  • SORT_REGULAR - domyślne sortowanie,
  • SORT_NUMERIC - numeryczne sortowanie,
  • SORT_STRING - sortowanie alfabetyczne,
  • SORT_LOCALE_STRING - sortowanie alfabetyczne w oparciu o ustawienia lokalne (setlocale).
  • SORT_NATURAL - sortowanie tekstowe
  • SORT_FLAG_CASE - sortowanie kombinowane (bitowe OR) między SORT_STRING lub SORT_NATURAL.

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



©® Media Nauka 2008-2023 r.