php

Funkcijos usort () naudojimas PHP

Funkcijos usort () naudojimas PHP
PHP egzistuoja daugybė įmontuotų funkcijų, skirtų masyvo kintamiesiems rūšiuoti. usort () funkcija yra viena iš jų. Ši funkcija rūšiuoja masyvą naudodama vartotojo nustatytą atgalinio skambučio funkciją. Kai masyve yra tam tikro tipo duomenys, kurių negalima rūšiuoti standartiniu būdu naudojant kitas rūšiavimo funkcijas, geriau naudoti usort (). Pavyzdžiui, jei masyve yra duomenų reikšmių, veislės negalima tinkamai surūšiuoti naudojant kitas PHP rūšiavimo funkcijas. Šio tipo kolekciją galima rūšiuoti apibrėžiant tinkamą vartotojo apibrėžtą funkciją, vadinamą antruoju funkcijos usort () argumentu, kaip funkcija usort () gali rūšiuoti konkrečias masyvo vertes, parodytas šioje pamokoje.

Sintaksė:

Funkcijos usort () sintaksė pateikta žemiau.

Bulio logotipas (masyvas $ masyvas, atgalinis skambutis ())

Ši funkcija turi du argumentus. Abu argumentai yra privalomi. Pirmasis argumentas nurodo masyvą, kuris bus rūšiuojamas. Funkcija „Callback ()“ palygina masyvo reikšmes, kad surikiuotų masyvą, ir pateikia skaitinę vertę. Jei funkcijos callback () argumentai yra vienodi, funkcija grąžins 0. Jei pirmasis callback () funkcijos argumentas yra didesnis nei antrasis argumentas, jis grąžins 1. Jei pirmasis skambinimo () funkcijos argumentas yra mažesnis nei antrasis argumentas, jis pateikia -1. Funkcija usort () grąžina true už sėkmingą rūšiavimą ir neteisingą už nesėkmingą rūšiavimą. Kai kurie šios funkcijos naudojimo būdai parodyti kitoje šios mokymo programos dalyje.

1 pavyzdys: rūšiuokite datos reikšmių masyvą

Šis pavyzdys rodo, kaip datos reikšmių masyvą galima tinkamai surūšiuoti naudojant funkciją usort (). Sukurkite PHP failą naudodami šį scenarijų. $ date_array yra apibrėžtas penkių datų reikšmėmis. rūšiuoti_data () funkcija yra deklaruojama kaip atgalinio skambučio funkcija $ date_array. Masyvo reikšmės išspausdinamos prieš iškviečiant funkciją usort (). Kai funkcija „usort“ () bus iškviesta su masyvu ir atgalinio skambinimo funkcija, ji pavers dvi datos reikšmes laiko žymės reikšmėmis naudodama funkciją strtotime (). Jei abi laiko žymos vertės yra lygios, funkcija grąžins 0. Jei pirmosios laiko žymos vertė yra didesnė už antrosios laiko žymos vertę, funkcija grąžins 1. Jei pirmosios laiko žymos vertė yra mažesnė už antrosios laiko žymos vertę, funkcija grąžins -1. funkcija usort () kelis kartus iškvies atgalinio ryšio funkciją, kol bus $ date_array yra tinkamai surūšiuotas. Tada surūšiuotas masyvas bus atspausdintas naudojant kiekvienam kilpa.

// Apibrėžkite atgalinio skambinimo funkciją
funkcija sort_date ($ a, $ b)
grįžti strtotime ($ a) - strtotime ($ b);

// Paskelbkite datos reikšmių masyvą
$ date_array = array ('25 -03-2020 ', '14 -03-2020', '28 -02-2015 ', '09 -12-2017', '20 -09-2015 ');
// Prieš rūšiuodami išspausdinkite masyvo reikšmes
aidas "

Datos masyvo reikšmės:

";
foreach ($ date_array kaip $ value)

echo $ vertė."
";

// Rūšiuokite masyvą naudodami usort ()
usort ($ date_array, "sort_date");
// Spausdinti masyvą po rūšiavimo
aidas "

Išvestis po rūšiavimo datos masyvo:

";
foreach ($ date_array kaip $ value)

echo $ vertė."
";

?>

Išvestis:

Ši išvestis bus rodoma paleidus scenarijų iš serverio.

2 pavyzdys: rūšiuokite asociacinį masyvą

Šis pavyzdys parodo, kaip asociacinį masyvą galima rūšiuoti naudojant funkciją usort (). Sukurkite PHP failą naudodami šį scenarijų. rūšiuoti_pavadinimai () funkcija yra paskelbta atgalinio skambučio funkcija, norint surikiuoti masyvą pagal masyvo reikšmes. Trikampis operatorius naudojamas rūšiuoti_pavadinimai () funkcija palyginti asociatyvaus masyvo reikšmes. Jei abi vertės yra lygios, tada atgalinio ryšio funkcija grąžins 0. Jei pirmojo argumento reikšmė yra didesnė nei antrojo argumento reikšmė, tada atgalinio skambinimo funkcija grąžins 1. Jei pirmojo argumento reikšmė yra mažesnė nei antrojo argumento reikšmė, tada atgalinio skambinimo funkcija grąžins -1. usort () surūšiuos masyvą naudodamas atgalinio ryšio funkciją, o rūšiuojamas masyvas bus atspausdintas naudojant kiekvienam kilpa.

// Apibrėžkite funkciją asociaciniam masyvui rūšiuoti
funkcija rūšiuoti_pavadinimai ($ a, $ b)
grąžinti $ a == $ b ? 0: $ a> $ b ? 1: -1;

// Apibrėžkite asociatyvų masyvą
$ asmenys = masyvas ("1001" => "Meera Ali", "1002" => "Kabir Hossain", "1003" => "Nurjahan Akter");
// Rūšiuoti masyvą
usort ($ asmenys, "rūšiuoti_pavadinimai");
// Spausdinti rūšiuojamą masyvą
aidas "Rūšiuoto masyvo vertės:
";
foreach ($ asmenys kaip $ asmuo)
echo $ asmuo. "
";
?>

Išvestis:

Ši išvestis bus rodoma paleidus scenarijų iš serverio.

3 pavyzdys: rūšiuokite dvimatį masyvą

Šis pavyzdys parodo, kaip galima sutvarkyti dvimatį masyvą naudojant funkciją usort (). Sukurkite PHP failą naudodami šį scenarijų. sort_array () funkcija yra paskelbta atgalinio skambučio funkcija, norint surikiuoti masyvą pagal masyvo reikšmes. strcmp () funkcija naudojama atgalinio skambučio funkcijoje, norint palyginti masyvo reikšmes. Jei abi reikšmės yra lygios, funkcija strcmp () grąžins 0. Jei pirmojo argumento reikšmė yra didesnė nei antrojo argumento reikšmė, funkcija strcmp () grąžins 1. Jei pirmojo argumento reikšmė yra mažesnė nei antrosios argumento reikšmė, funkcija strcmp () grąžins -1. „usort“ () surūšiuos masyvą naudodamas atgalinio ryšio funkciją, o išrūšiuoto masyvo struktūra bus atspausdinta naudojant spausdinti_r () funkcija.

// Apibrėžkite funkciją dviejų matmenų masyvui rūšiuoti
funkcija sort_array ($ a, $ b)

grąžinti strcmp ($ a ['a'], $ b ['a']);

// Paskelbkite dviejų matmenų masyvą
$ animals = masyvas (masyvas ("a" => "Liūtas"), masyvas ("a" => "Elnias"), masyvas ("a" => "Triušis"), masyvas ("a" => "Beždžionė "));
// Rūšiuoti masyvą
usortas ($ gyvūnai, "sort_array");
// Spausdinti rūšiuojamą masyvą
aidas "Masyvo vertės po usort ():
";
spausdinti_r ($ gyvūnai);
aidas "
";
?>

Išvestis:

Ši išvestis bus rodoma paleidus scenarijų iš serverio.

Išvada:

usort () yra naudinga funkcija rūšiuojant tam tikrus duomenų tipus, kurie negali teisingai rūšiuoti įprastų PHP rūšiavimo funkcijų. Funkcijos „usort ()“ atgalinio skambučio funkcija apibrėžiama pagal reikšmių rūšis, kurių reikia rūšiuoti. Ši pamoka padės skaitytojams žinoti, kaip naudoti „usort“) funkciją ir pritaikyti ją savo scenarijuje, remiantis reikalavimu.

„HD Remastered“ žaidimai, skirti „Linux“, kurie niekada anksčiau nebuvo išleisti „Linux“
Daugelis žaidimų kūrėjų ir leidėjų siūlo senų žaidimų HD remasterį, kad prailgintų franšizės laiką. Prašome gerbėjų, prašančių suderinamumo su šiuolai...
Kaip naudoti „AutoKey“, norint automatizuoti „Linux“ žaidimus
„AutoKey“ yra darbalaukio automatizavimo įrankis, skirtas „Linux“ ir „X11“, užprogramuotas „Python 3“, „GTK“ ir „Qt“. Naudodami scenarijų ir „MACRO“ f...
Kaip parodyti FPS skaitiklį „Linux“ žaidimuose
„Linux“ žaidimai gavo didelį postūmį, kai „Valve“ paskelbė „Linux“ palaikymą „Steam“ klientui ir jų žaidimams 2012 m. Nuo tada daugelis AAA ir indie ž...