Metoda pro řazení pole podle (nejen) české abecedy

PHP Ostatní Metoda pro řazení pole podle (nejen) české abecedy

Dříve či později každý narazí na potřebu řazení pole podle abecedy. Bohužel, funkce sort(), která pracuje s UTF tabulkou, si neporadí se znaky jako je Č, Š, Ř apod.

$pole = ('Klára', 'Zuzana', 'Řehoř', 'Chroust', 'Čeněk', 'Adam', 'Ondřej');
sort($pole);
print_r($pole);

V UTF tabulce jsou až za písmenem Z, proto se Šárka zařadí až za Zuzanu. Výsledek výše psaného kódu by byl:

Array ( [0] => Adam [1] => Chroust [2] => Klára [3] => Ondřej [4] => Zuzana [5] => Čeněk [6] => Řehoř )

Na různých fórech jsem nacházel více či méně funkční nahrazení funkce sort(), ale žádné se mi nezdálo dostatečně flexibilní. Třída SortUTF obsahuje metodu sort(), která svůj účel plní - troufám si říct - na 100%. Předávanými parametry jsou pole $array, které chcete seřadit, a dva nepovinné parametry $useCh a $chars, kterým se budu věnovat níže.

Metodu jednoduše voláte SortUTF::sort($a­rray):

$pole = array('Klára', 'Zuzana', 'Řehoř', 'Chroust', 'Čeněk', 'Adam', 'Ondřej');
$pole = SortUTF::sort($pole);
print_r($pole);

Výsledek:

Array ( [0] => Adam [1] => Chroust [2] => Čeněk [3] => Klára [4] => Ondřej [5] => Řehoř [6] => Zuzana )

To už není špatné, ovšem oku pozorného češtináře jistě neunikne Chroust, který by měl být až za Čeňkem. Tím se dostávám ke druhému parametru funkce, tedy $useCh. Jak název napovídá, při předání hodnoty true bude metoda brát v úvahu CH jako jedno písmeno.

$pole = array('Klára', 'Zuzana', 'Řehoř', 'Chroust', 'Čeněk', 'Adam', 'Ondřej');
$pole = SortUTF::sort($pole, true);
print_r($pole);
Array ( [0] => Adam [1] => Čeněk [2] => Chroust [3] => Klára [4] => Ondřej [5] => Řehoř [6] => Zuzana )

Poslední parametr metody nám dává možnost nahradit předdefinovaný řetězec znaků abecedy řetězcem vlastním (jednotlivé znaky oddělujte čárkou). V tom případě nezapomeňte předávat i parametr $useCh;

$pole = SortUTF::sort($pole, NULL, $string);

V komentářích samozřejmě uvítám případné připomínky.

Program byl vytvořen v roce 2016.

 

Stáhnout

Staženo 23x (1.02 kB)
Aplikace je včetně zdrojových kódů v jazyce php

 

  Aktivity (2)

Program pro vás napsal Ondřej Crha
Avatar

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Miniatura
Všechny články v sekci
Ostatní tutoriály v PHP

 

 

Komentáře

Avatar
1Pupik1989
Člen
Avatar
1Pupik1989:

Já na řazení českých znaků používám nativní funkci "usort".

 
Odpovědět 10. dubna 23:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.