php

Funkcijas usort () izmantošana PHP

Funkcijas usort () izmantošana PHP
PHP pastāv daudzas iebūvētas funkcijas, lai kārtotu masīva mainīgos. funkcija usort () ir viena no tām. Šī funkcija kārto masīvu, izmantojot lietotāja noteikto atzvanīšanas funkciju. Ja masīvā ir noteikta veida dati, kurus nevar kārtot standarta veidā, izmantojot citas kārtošanas funkcijas, labāk ir izmantot usort (). Piemēram, ja masīvā ir datu vērtības, tad šķirni nevar atbilstoši kārtot, izmantojot citas PHP kārtošanas funkcijas. Šāda veida kolekciju var kārtot, nosakot pareizu lietotāja definētu funkciju, kas izsaukta funkcijas usort () otrajā argumentā, kā funkcija usort () var kārtot īpašās masīva vērtības, kas parādītas šajā apmācībā.

Sintakse:

Funkcijas usort () sintakse ir sniegta zemāk.

Būla lietotājs (masīvs $ masīvs, atzvanīšana ())

Šai funkcijai ir divi argumenti. Abi argumenti ir obligāti. Pirmais arguments ņem masīvu, kas tiks sakārtots. Funkcija Callback () salīdzina masīva vērtības, lai kārtotu masīvu, un atgriež skaitlisku vērtību. Ja atzvana () funkcijas argumenti ir vienādi, funkcija atgriezīs 0. Ja atzvanīšanas () funkcijas pirmais arguments ir lielāks nekā otrais arguments, tas atgriezīs 1. Ja atzvanīšanas () funkcijas pirmais arguments ir mazāks nekā otrais arguments, tas atgriež -1. funkcija usort () veiksmīgai kārtošanai atgriež vērtību true, bet neveiksmīga kārtošana - vērtību false. Daži šīs funkcijas izmantošanas veidi ir parādīti šīs apmācības nākamajā daļā.

1. piemērs: kārtojiet datumu vērtību masīvu

Šis piemērs parāda, kā datumu vērtību masīvu var kārtot pareizi, izmantojot funkciju usort (). Izveidojiet PHP failu ar šādu skriptu. $ date_array ir definēts ar piecu datumu vērtībām. sort_date () funkcija tiek deklarēta kā atzvanīšanas funkcija, lai kārtotu $ date_array. Masīva vērtības tiek izdrukātas pirms funkcijas usort () izsaukšanas. Kad funkcija usort () tiek izsaukta ar masīvu un atzvanīšanas funkciju, tā pārvērš divas datuma vērtības laika zīmoga vērtībās, izmantojot funkciju strtotime (). Ja abas laika zīmoga vērtības ir vienādas, funkcija atgriezīs 0. Ja pirmā laika zīmoga vērtība ir lielāka nekā otrā laika zīmoga vērtība, funkcija atgriezīs 1. Ja pirmā laika zīmoga vērtība ir mazāka nekā otrā laika zīmoga vērtība, funkcija atgriezīsies -1. funkcija usort () vairākas reizes izsauks atzvanīšanas funkciju, līdz $ date_array ir kārtots pareizi. Pēc tam kārtotais masīvs tiks izdrukāts, izmantojot katram cilpa.

// Definējiet atzvanīšanas funkciju
funkcija sort_date ($ a, $ b)
atgriezties strtotime ($ a) - strtotime ($ b);

// Deklarēt datumu vērtību masīvu
$ date_array = masīvs ('25 -03-2020 ', '14 -03-2020', '28 -02-2015 ', '09 -12-2017', '20 -09-2015 ');
// Pirms kārtošanas izdrukājiet masīva vērtības
atbalss "

Datuma masīva vērtības:

";
foreach ($ date_array kā $ vērtība)

echo $ vērtība."
";

// Kārtojiet masīvu, izmantojot usort ()
usort ($ date_array, "sort_date");
// Drukāt masīvu pēc kārtošanas
atbalss "

Rezultāts pēc datumu masīva šķirošanas:

";
foreach ($ date_array kā $ vērtība)

echo $ vērtība."
";

?>

Izeja:

Pēc skripta palaišanas no servera parādīsies šāda izeja.

2. piemērs: kārtojiet asociatīvo masīvu

Šis piemērs parāda, kā asociatīvo masīvu var kārtot, izmantojot funkciju usort (). Izveidojiet PHP failu ar šādu skriptu. sort_names () funkcija tiek atzīta par atzvanīšanas funkciju, lai kārtotu masīvu, pamatojoties uz masīva vērtībām. Ternārais operators tiek izmantots sort_names () funkcija, lai salīdzinātu asociatīvā masīva vērtības. Ja abas vērtības ir vienādas, atzvanīšanas funkcija atgriezīs 0. Ja pirmā argumenta vērtība ir lielāka par otro argumenta vērtību, atzvanīšanas funkcija atgriezīs 1. Ja pirmā argumenta vērtība ir mazāka par otro argumenta vērtību, atzvanīšanas funkcija atgriezīs -1. usort () kārtos masīvu, izmantojot atzvanīšanas funkciju, un sakārtotais masīvs tiks izdrukāts, izmantojot katram cilpa.

// Definējiet funkciju, lai kārtotu asociatīvo masīvu
funkcija sort_names ($ a, $ b)
atgriezt $ a == $ b ? 0: $ a> $ b ? 1: -1;

// Definējiet asociatīvo masīvu
$ personas = masīvs ("1001" => "Meera Ali", "1002" => "Kabir Hossain", "1003" => "Nurjahan Akter");
// Kārtojiet masīvu
usort ($ personas, "sort_names");
// Izdrukājiet sakārtoto masīvu
atbalss "Kārtotā masīva vērtības:
";
foreach ($ personas kā $ persona)
echo $ persona. "
";
?>

Izeja:

Pēc skripta palaišanas no servera parādīsies šāda izeja.

3. piemērs: kārtojiet divdimensiju masīvu

Šis piemērs parāda, kā divdimensiju masīvu var kārtot, izmantojot funkciju usort (). Izveidojiet PHP failu ar šādu skriptu. sort_array () funkcija tiek pasludināta par atzvanīšanas funkciju, lai kārtotu masīvu, pamatojoties uz masīva vērtībām. strcmp () funkcija tiek izmantota atzvanīšanas funkcijā, lai salīdzinātu masīva vērtības. Ja abas vērtības ir vienādas, funkcija strcmp () atgriezīs 0. Ja pirmā argumenta vērtība ir lielāka par otro argumenta vērtību, funkcija strcmp () atgriezīs vērtību 1. Ja pirmā argumenta vērtība ir mazāka par otro argumenta vērtību, funkcija strcmp () atgriezīs -1. usort () kārtos masīvu, izmantojot atzvanīšanas funkciju, un sakārtotā masīva struktūra tiks izdrukāta, izmantojot print_r () funkciju.

// Definējiet funkciju divdimensiju masīva kārtošanai
funkcija sort_array ($ a, $ b)

atgriezties strcmp ($ a ['a'], $ b ['a']);

// Deklarēt divdimensiju masīvu
$ animals = masīvs (masīvs ("a" => "Lauva"), masīvs ("a" => "Briedis"), masīvs ("a" => "Trusis"), masīvs ("a" => "Pērtiķis "));
// Kārtojiet masīvu
usort ($ dzīvnieki, "sort_array");
// Izdrukājiet sakārtoto masīvu
atbalss "Masīva vērtības pēc usort ():
";
print_r ($ dzīvnieki);
atbalss "
";
?>

Izeja:

Pēc skripta palaišanas no servera parādīsies šāda izeja.

Secinājums:

usort () ir noderīga funkcija tādu datu šķirošanai, kuri nevar pareizi kārtot PHP parastās kārtošanas funkcijas. Funkcijas usort () atzvanīšanas funkcija tiek definēta, pamatojoties uz vērtību veidiem, kas nepieciešami kārtošanai. Šī apmācība palīdzēs lasītājiem uzzināt, kā izmantot funkciju usort () un pielietot to savā skriptā, pamatojoties uz prasību.

Microsoft Sculpt Touch bezvadu peles apskats
Es nesen lasīju par Microsoft Sculpt Touch bezvadu pele un nolēma to nopirkt. Pēc kāda laika izmantošanas es nolēmu dalīties savā pieredzē ar to. Šo b...
AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...
Vidējā peles poga nedarbojas sistēmā Windows 10
The peles vidējā poga palīdz jums ritināt garas tīmekļa lapas un ekrānus ar lielu datu daudzumu. Ja tas apstājas, jūs galu galā izmantosiet tastatūru,...