php

Použití funkce usort () v PHP

Použití funkce usort () v PHP
V PHP existuje mnoho integrovaných funkcí pro třídění proměnných pole. funkce usort () je jedním z nich. Tato funkce třídí pole pomocí uživatelem definované funkce zpětného volání. Pokud pole obsahuje určitý typ dat, který nelze standardním způsobem seřadit pomocí jiných funkcí řazení, je lepší použít usort (). Například pokud pole obsahuje datové hodnoty, pak odrůdu nelze vhodně řadit pomocí jiných funkcí řazení PHP. Tento typ kolekce lze řadit definováním správné funkce definované uživatelem, která se volá ve druhém argumentu funkce usort (), jak může funkce usort () třídit konkrétní hodnoty pole zobrazené v tomto výukovém programu.

Syntax:

Syntaxe funkce usort () je uvedena níže.

Boolean usort (pole $ pole, zpětné volání ())

Tato funkce má dva argumenty. Oba argumenty jsou povinné. První argument přebírá pole, které bude tříděno. Funkce callback () porovnává hodnoty pole, aby seřadilo pole a vrátí číselnou hodnotu. Pokud jsou argumenty funkce callback () stejné, vrátí funkce 0. Pokud je první argument funkce callback () větší než druhý argument, vrátí 1. Pokud je první argument funkce callback () menší než druhý argument, vrátí hodnotu -1. funkce usort () vrací true pro úspěšné třídění a vrací false pro neúspěšné třídění. Některá použití této funkce byla ukázána v další části tohoto tutoriálu.

Příklad 1: Řazení pole hodnot data

Následující příklad ukazuje, jak lze správně řadit pole hodnot data pomocí funkce usort (). Vytvořte soubor PHP s následujícím skriptem. $ date_array je definována pětihodinovými hodnotami. sort_date () funkce je deklarována jako funkce zpětného volání pro třídění $ date_array. Hodnoty pole se vytisknou před voláním funkce usort (). Když je funkce usort () volána s polem a funkcí zpětného volání, převede dvě hodnoty data na hodnoty časového razítka pomocí funkce strtotime (). Pokud jsou dvě hodnoty časového razítka stejné, vrátí funkce hodnotu 0. Pokud je hodnota prvního časového razítka větší než hodnota druhého časového razítka, funkce vrátí 1. Pokud je hodnota prvního časového razítka nižší než hodnota druhého časového razítka, funkce vrátí -1. funkce usort () zavolá funkci zpětného volání několikrát, dokud $ date_array je správně tříděno. Dále bude vytištěno seřazené pole pomocí pro každého smyčka.

// Definujte funkci zpětného volání
funkce sort_date ($ a, $ b)
vrátit strtotime ($ a) - strtotime ($ b);

// Deklaruje pole hodnot data
$ date_array = array ('25-03-2020 ', '14-03-2020', '28 -02-2015 ', '09 -12-2017', '20-09-2015 ');
// Před seřazením vytiskněte hodnoty pole
ozvěna "

Hodnoty pole data:

";
foreach ($ date_array jako $ hodnota)

echo $ value."
";

// Třídit pole pomocí usort ()
usort ($ date_array, "sort_date");
// Po seřazení vytisknout pole
ozvěna "

Výstup po seřazení pole data:

";
foreach ($ date_array jako $ hodnota)

echo $ value."
";

?>

Výstup:

Po spuštění skriptu ze serveru se zobrazí následující výstup.

Příklad 2: Řazení asociativního pole

Následující příklad ukazuje, jak lze asociativní pole třídit pomocí funkce usort (). Vytvořte soubor PHP s následujícím skriptem. třídit_jména () funkce je deklarována jako funkce zpětného volání pro třídění pole na základě hodnot pole. Ternární operátor se používá v třídit_jména () funkce pro porovnání hodnot asociativního pole. Pokud jsou obě hodnoty stejné, vrátí funkce zpětného volání 0. Pokud je hodnota prvního argumentu větší než hodnota druhého argumentu, funkce zpětného volání vrátí 1. Pokud je hodnota prvního argumentu menší než hodnota druhého argumentu, funkce zpětného volání vrátí -1. usort () seřadí pole pomocí funkce zpětného volání a seřazené pole se vytiskne pomocí pro každého smyčka.

// Definujte funkci pro třídění asociativního pole
funkce sort_names ($ a, $ b)
vrátit $ a == $ b ? 0: $ a> $ b ? 1: -1;

// Definujte asociativní pole
$ persons = array ("1001" => "Meera Ali", "1002" => "Kabir Hossain", "1003" => "Nurjahan Akter");
// Třídit pole
usort ($ osob, "sort_names");
// Vytiskne seřazené pole
ozvěna "Hodnoty seřazeného pole:
";
foreach ($ osoby jako $ osoba)
echo $ osoba. "
";
?>

Výstup:

Po spuštění skriptu ze serveru se zobrazí následující výstup.

Příklad-3: Řazení dvourozměrného pole

Následující příklad ukazuje, jak lze třídit dvourozměrné pole pomocí funkce usort (). Vytvořte soubor PHP s následujícím skriptem. sort_array () funkce je deklarována jako funkce zpětného volání pro třídění pole na základě hodnot pole. Funkce strcmp () se používá ve funkci zpětného volání k porovnání hodnot pole. Pokud jsou dvě hodnoty stejné, vrátí funkce strcmp () 0. Pokud je hodnota prvního argumentu větší než hodnota druhého argumentu, vrátí funkce strcmp () 1. Pokud je hodnota prvního argumentu menší než hodnota druhého argumentu, vrátí funkce strcmp () -1. usort () seřadí pole pomocí funkce zpětného volání a struktura seřazeného pole se vytiskne pomocí print_r () funkce.

// Definujte funkci pro třídění dvourozměrného pole
funkce sort_array ($ a, $ b)

vrátit strcmp ($ a ['a'], $ b ['a']);

// Deklarujte dvourozměrné pole
$ animals = pole (pole ("a" => "lev"), pole ("a" => "jelen"), pole ("a" => "králík"), pole ("a" => "opice) "));
// Třídit pole
usort ($ animals, "sort_array");
// Vytiskne seřazené pole
ozvěna "Hodnoty pole po usort ():
";
print_r ($ zvířata);
ozvěna "
";
?>

Výstup:

Po spuštění skriptu ze serveru se zobrazí následující výstup.

Závěr:

usort () je užitečná funkce pro třídění konkrétních typů dat, která neumí správně řadit běžné funkce řazení PHP. Funkce zpětného volání funkce usort () je definována na základě druhů hodnot, které jsou k třídění požadovány. Tento kurz pomůže čtenářům vědět, jak používat funkci usort () a použít ji ve svém skriptu na základě požadavku.

Hry Porty komerčních her s otevřeným zdrojovým kódem
Porty komerčních her s otevřeným zdrojovým kódem
Zdarma, s otevřeným zdrojovým kódem a multiplatformní herní enginy lze hrát staré i některé z poměrně nedávných herních titulů. Tento článek uvede sez...
Hry Nejlepší hry z příkazového řádku pro Linux
Nejlepší hry z příkazového řádku pro Linux
Příkazový řádek není při používání Linuxu jen vaším největším spojencem - může být také zdrojem zábavy, protože jej můžete použít k hraní mnoha zábavn...
Hry Nejlepší aplikace pro mapování gamepadu pro Linux
Nejlepší aplikace pro mapování gamepadu pro Linux
Pokud rádi hrajete hry na Linuxu s gamepadem místo typického vstupního systému pro klávesnici a myš, máte k dispozici několik užitečných aplikací. Mno...