Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Këshilla
  • Renditja e një grupi në mënyrë alfabetike php. Renditja e një grupi në php

Renditja e një grupi në mënyrë alfabetike php. Renditja e një grupi në php

Përditësimi i fundit: 1.11.2015

funksioni është_array

Funksioni is_array() kontrollon nëse ndryshorja është një grup, dhe nëse është, kthen true, përndryshe kthen false. Për shembull:

$isar = është_array ($teknika); echo ($isar==true)?"this is an array":"ky nuk është një grup";

funksionet numër/madhësi

Funksionet count() dhe sizeof() marrin numrin e elementeve të grupit:

$numër = numërim ($teknika); // njëjtë si // $number = sizeof($technics); echo "Rreth teknikë ka elemente $number";

funksionet e përzierjes

Funksioni i përzierjes përzien elementet e grupit në mënyrë të rastësishme:

$os = grup ("Windows 95", "Windows XP", "Windows Vista", "Windows 7", "Windows 8", "Windows 10"); riorganizimi ($os); print_r($os); // një nga opsionet // Array ( => Windows 95 => Windows 7 => Windows Vista => Windows XP => Windows 10 => Windows 8)

funksionet kompakte

Funksioni kompakt ju lejon të krijoni një grup shoqërues nga një grup variablash, ku vetë emrat e variablave do të jenë çelësat:

Apple II => Mollë => 1978) ?>

Funksioni kompakt merr një grup variablash në kllapa. Çdo variabël citohet pa shenjën $. Rezultati i funksionit është një grup i ri.

Renditja e vargjeve

Ekzistojnë dy lloje të renditjes në PHP: renditja e vargjeve sipas alfabetit dhe renditja e numrave në rend rritës/zbritës. Nëse vlerat që do të renditen janë vargje, atëherë ato renditen sipas alfabetit; nëse janë numra, atëherë ato renditen në rend numerik në rritje. PHP zgjedh llojin e renditjes si parazgjedhje.

Për të renditur në rend rritës, përdorni funksionin asort:

"Lenovo IdeaTab A3500", "samsung" => "Samsung Galaxy Tab 4", "apple" => "Apple iPad Air"); asort ($tableta); jehonë"

    "; foreach ($tabletë si $key => $value) (jehonë "
  • $key: $value
  • ";) jehonë"
"; ?>

Në këtë rast, vlerat e grupit përfaqësojnë vargje, kështu që PHP do të zgjedhë të renditë sipas alfabetit. Megjithatë, me ndihmën e një parametri shtesë, ne mund t'i tregojmë në mënyrë eksplicite interpretuesit PHP llojin e renditjes. Ky parametër mund të marrë tre vlera:

    SORT_REGULAR: përzgjedhje automatike e renditjes

    SORT_NUMERIC: renditje numerike

    SORT_STRING: renditni sipas alfabetit

Le të specifikojmë në mënyrë eksplicite llojin e renditjes:

Asort($tableta, SORT_STRING);

Për të renditur një grup në rend të kundërt, përdorni funksionin arsort:

Arsort ($tableta);

Renditja e çelësave

Funksioni asort rendit sipas vlerave të elementeve, por ka edhe një renditje sipas tasteve. Ai përfaqësohet nga funksioni ksort:

Ksort($tableta, SORT_STRING);

Renditja sipas tasteve në rend të kundërt bëhet nga funksioni krsort():

Krssort ($tableta);

lloj natyral

Edhe pse funksionet e mësipërme të renditjes e bëjnë mirë punën e tyre, ato ende nuk janë të mjaftueshme. Për shembull, le të renditim grupin e mëposhtëm në rend rritës:

Windows 10 => Windows 7 => Windows 8) ?>

Meqenëse vlerat përfaqësojnë vargje, PHP renditet në mënyrë alfabetike. Megjithatë, ky lloj nuk respekton numrat dhe rastet. Prandaj, vlera "Windows 10" do të shkojë në fillim, dhe jo në fund, siç duhet të ishte. Dhe për të zgjidhur këtë problem, PHP ka funksionin natsort(), i cili kryen një renditje natyrale:

Windows 7 => Windows 8 => Windows 10) ?>

Nëse duam gjithashtu që renditja të jetë e pandjeshme ndaj shkronjave të vogla, mund të përdorim funksionin natcasesort().

Renditja është një nga procedurat më të rëndësishme kur punoni me vargje. Për të kuptuar rëndësinë e tij, mjafton të kujtojmë veprime të tilla si, për shembull, renditja e filmave sipas rendit alfabetik ose renditja e çdo çmimi në rend rritës ose zbritës, etj. Dakord, veprime shumë të zakonshme për aplikacione të ndryshme! Sot do të flasim për mënyrën e renditjes së elementeve të grupit sipas kushteve të dhëna.

Pra, renditja e bën më të lehtë punën me vargje. Kur elementët renditen, është më e lehtë t'i gjesh dhe të kryesh veprimet e nevojshme me ta, për shembull, ato për të cilat kam shkruar pak më lart. E gjitha varet nga detyra që keni përpara.

Detyrat mund të jenë të ndryshme, por mjetet që do të përdorim do të mbeten standarde. Këto mjete janë funksione të veçanta që përdoren për të renditur elementet e një grupi.

Ka disa nga këto funksione në php, dhe cili prej tyre do të përdoret do të varet përsëri nga detyra specifike, si dhe nga fakti nëse grupi juaj është një grup shoqërues ose një grup liste.

Le t'i hedhim një vështrim këtyre funksioneve dhe të shohim se si funksionojnë ato.

Renditja e grupeve-listave sipas rendit alfabetik dhe të kundërt

Së pari, le të njihemi me një funksion mjaft të thjeshtë dhe të kuptueshëm. rendit ().

Do të na lejojë të renditim elementet e grupit në rend rritës ose, nëse këta elementë janë vargje, sipas rendit alfabetik.

Aplikimi i tij është mjaft i thjeshtë. Për të testuar këtë funksion, thjesht duhet të deklarojmë një grup, më pas të përdorim funksionin për të renditur elementët e tij dhe për të shfaqur rezultatin në ekran për të parë se çfarë ndodh.

$Mass = grup ("Katya", "Anya", "Lena", "Andrey"); sort ($Mass); print_r ($Mass); ?>

Dhe rezultati do të jetë si më poshtë. Siç mund ta shihni në pamjen e ekranit në të djathtë, artikujt janë renditur sipas alfabetit. Nëse në vend të elementeve të vargut kemi numra, atëherë ky funksion do t'i rendit edhe numrat në rend rritës. Mund ta kontrolloni vetë.

Ekziston edhe një funksion që bën të kundërtën, domethënë rendit elementet e një grupi në rend alfabetik zbritës ose të kundërt.

Ky funksion quhet rendit (). Ajo funksionon si kjo:

$Mass = grup ("Katya", "Anya", "Lena", "Andrey"); sort ($Mass); print_r ($Mass); ?>

Siç mund ta shihni, tani rezultati është krejtësisht i kundërt. Elementet e grupit renditen sipas rendit zbritës, që në këtë rast do të thotë sipas rendit të kundërt alfabetik.

Mendoj se me këto funksione gjithçka është shumë e qartë. Provoni ato me grupet tuaja dhe nuk do të keni pyetje.

Renditja e vargjeve shoqëruese

Gjithçka është në rregull, megjithatë, me vargjet shoqëruese, ne nuk do të jemi më në gjendje t'i përdorim këto funksione, pasi ato prishin lidhjen e vlerës me çelësin e grupit. Prandaj, duhet të njihemi me disa funksione të tjera që do të na lejojnë të renditim vargje shoqëruese.

Siç e dimë, grupet asociative kanë çelësa dhe vlera. Prandaj, renditja mund të bëhet me çelësa ose me vlera.

Le të fillojmë duke renditur sipas vlerave.

Për të renditur vlerat e një grupi shoqërues sipas rendit alfabetik, ne përdorim funksionin rendit ().

Për ta bërë këtë, së pari krijoni një grup shoqërues, aplikoni funksionin, shfaqni rezultatin në ekran.

$Mass["one"]="Kate"; $Mass["two"]="Boris"; $Mass["tre"]="Anya"; $Mass["four"]="Rita"; sort ($Mass); print_r ($Mass); ?>

Siç mund ta shihni, vlerat e grupit asociativ janë renditur sipas alfabetit, megjithatë, lidhja e tyre me çelësat ruhet.

Në të njëjtën mënyrë, funksioni grup (), përveç se ai rendit vlerat e grupit shoqërues në rend të kundërt.

$Mass["one"]="Kate"; $Mass["two"]="Boris"; $Mass["tre"]="Anya"; $Mass["four"]="Rita"; grup ($Mass); print_r ($Mass); ?>

Këtu përsëri mund të shohim se vlerat e elementeve të grupit ruajnë lidhjen e tyre me çelësat, por janë të renditura në rend të kundërt.

Ne mund të renditim të njëjtin grup shoqërues sipas çelësave.

Siç e keni menduar tashmë, kjo mund të bëhet në rend alfabetik ose të kundërt.

Për të renditur një grup sipas tasteve sipas rendit alfabetik, na duhet një funksion ksort ().

$Mass["one"]="Kate"; $Mass["two"]="Boris"; $Mass["tre"]="Anya"; $Mass["four"]="Rita"; xsort ($Mass); print_r ($Mass); ?>

Vargu është renditur sipas tasteve sipas rendit alfabetik.

Për të renditur një grup sipas tasteve të tij në rend të kundërt, përdorni funksionin krssort ().

$Mass["one"]="Kate"; $Mass["two"]="Boris"; $Mass["tre"]="Anya"; $Mass["four"]="Rita"; krssort ($Mass); print_r ($Mass); ?>

Unë mendoj se gjithçka është e qartë nga pamja e ekranit.

Renditja e personalizuar

Ne gjithashtu mund të vendosim rendin tonë të renditjes, domethënë të krijojmë një renditje të personalizuar.

Për këtë ka edhe funksione të veçanta në php.

Për renditjen me porosi të listave, ofrohet një funksion usort ().

Do të duhen dy argumente. Argumenti i parë është grupi ynë; argumenti i dytë do të përmbajë emrin e funksionit që krahason dy elementët.

Funksioni i krahasimit do të marrë dy variabla dhe duhet të kthejë një nga vlerat:

1 - nëse elementi i parë i krahasimit është më i madh se i dyti;

-1 - nëse e dyta është më e madhe se e para;

0 - nëse elementët janë të barabartë.

Kështu, për shembull, ne mund t'i renditim elementet e një grupi në rend rritës të gjatësisë së tyre.

Për ta bërë këtë, së pari deklarojmë vetë grupin, i cili do të përmbajë elementë vargu me gjatësi të ndryshme.

Pas kësaj, ne përdorim funksionin për renditje me porosi usort (). Ne do ta kalojmë atë si argumente: emrin e grupit tonë dhe emrin e funksionit që krijuam për të krahasuar elementët.

Pas gjithë kësaj, ne mund të printojmë rezultatin në ekran për t'u siguruar që elementët tanë janë renditur në rendin rritës të gjatësisë së tyre.

$Mass = grup ("Andrey", "Yana", "Katya"); funksioni check_length($str1,$str2)( $length1 = strlen($str1); $length2 = strlen($str2); if($length1 == $length2): kthej 0; elseif($gjatësi1

Ne marrim rezultatin e mëposhtëm. Elementet e grupit tonë janë renditur sipas radhës së gjatësisë në rritje.

Ne gjithashtu mund të bëjmë një renditje me porosi të një grupi shoqërues me çelësat e tij. Për këtë na duhet një funksion uksort () dhe vetë grupi asociativ.

Le ta mbajmë funksionin e personalizuar të njëjtë, pra të krahasojmë gjatësinë e tasteve.

Tastet e elementeve të grupit renditen sipas renditjes rritëse të gjatësisë së tyre.

Dhe ne gjithashtu mund të krijojmë një renditje të personalizuar të një grupi shoqërues sipas vlerave të elementeve të tij. Funksioni do të na ndihmojë me këtë. uasort ().

Parimi është ende i njëjtë.

$Mass["one"]="yana"; $Mass["two"]="andrey"; $Mass["tre"]="kat"; funksioni check_length($str1,$str2)( $length1 = strlen($str1); $length2 = strlen($str2); if($length1 == $length2): kthej 0; elseif($gjatësi1

Vargu tani renditet duke rritur gjatësinë e vlerave të tij.

Sigurisht, funksioni i përcaktuar nga përdoruesi mund të jetë i ndryshëm, për shembull, ai mund të hedhë vlera në një rast të përbashkët ose të bëjë disa gjëra të tjera.

Për të kuptuar mirë se si funksionon renditja me porosi, duhet të praktikoni dhe të përpiqeni të shkruani një lloj funksioni krahasimi tuajin.

Megjithatë, tani mendoj se ju keni një kuptim të plotë se si mund të renditni elementët e një grupi dhe si t'i përdorni këto elemente të renditura.

Praktikoni, shkruani komentet tuaja dhe ndajeni artikullin me miqtë tuaj duke përdorur butonat e mediave sociale.

Nëse nuk jeni abonuar ende në përditësimet e blogut, atëherë abonohuni. Formulari i abonimit është më poshtë.

Anna Kotelnikova ishte me ju. Shihemi në artikujt e ardhshëm.

Kur punoni në shumë site, shpesh ndeshet çështja e renditjes së të dhënave të grupeve sipas rendit alfabetik. Shumë njerëz shkruajnë grupe shtesë për këtë, krahasojnë tabela të mëdha dhe renditin secilin emër ... Ky opsion nuk është më i miri, megjithëse ne gjithashtu do ta konsiderojmë atë. Në këtë artikull, unë do të doja të ofroj mënyrën më të lehtë dhe më të shkurtër, të cilën nëse i lexoni me kujdes manualet, mund ta gjeni në dokumentacion.

Array alfabetik PHP

Metoda është mjaft e thjeshtë dhe përbëhet nga dy hapa: vendosja e vendndodhjes (setlocal) dhe renditja e drejtpërdrejtë e grupit. Konsideroni një shembull me komente.

Kodi PHP

setlocale(LC_ALL, "Russian_Russia.1251"); // vendosni vendndodhjen për shkronjat ruse

// një shembull i një grupi ku fjalët NUK janë të renditura
$example=array("kavanoz","Boris","pamje","profil","gjuetar","Fjodor","grua","zë");

Natcasesort($shembull, SORT_LOCALE_STRING); // renditja e grupit NUK është e ndjeshme ndaj shkronjave të vogla
// PËR CASE-sensitive, përdorni sort në vend të natcasesort

// shfaq rezultatin
foreach ($shembull si $key => $value)(
echo "$value "(!LANG:; // shfaq vetëm fjalë, pa indeks
}
?>

Demonstrimi Shkarkoni burimet
Ju mund të shihni se si funksionon skenari në demo. Nëse dëshironi, mund të shkarkoni edhe arkivin me skedarin.

Nëse serveri juaj nuk është në Windows, atëherë do t'ju duhet të instaloni lokale të tjera ose disa menjëherë:

(LC_ALL,"ru_RU.CP1251", "rus_RUS.CP1251", "Russian_Russia.1251");!}
// Printon ru_RU.CP1251 për FreeBSD
// Shfaq rus_RUS.CP1251 për Linux
// Nxjerrë Russian_Russia.1251 për Windows

Do të kaloj përpara një prej pyetjeve me një përgjigje - lokalizimi për Ukrainën në PHP duket si ky:


Si të vendosni vendndodhjen për kodime të tjera në PHP?

// Vendosja e lokaleve për Windows

// Windows encoding-1251
setlocale(LC_ALL, "Russian_Russia.1251");

// Kodimi KOI8-R
setlocale (LC_ALL, "Russian_Russia.20866");

// Kodimi UTF-8 (përdorni me kujdes)
setlocale (LC_ALL, "Russian_Russia.65001");
?>

Mënyra e dytë për të alfabetizuar një grup PHP

Nëse kjo metodë nuk ju përshtatet dhe dëshironi të shkoni në rrugën e vështirë, atëherë krijoni një grup si ky:

Kodi PHP

=> a
=> b
=> në
=> g
=> q
=> e
=> po
=> f
=> h
=> dhe
=> th
=> te
=> l
=> m
=> n
=> rreth
=> n
=> fq
=> me
=> t
=> y
=> f
=> x
=> c
=> h
=> sh
=> u
=> b
=> s
=> b
=> e
=> ju
=> i
Dhe përsëritni mbi shkronjën e parë të grupit të dytë.
Shkronja e parë e çdo elementi të grupit llogaritet si më poshtë:

Kodi PHP

$city="Moskë"; // për shembull element me indeks 1

Letra_e parë = mb_substr($qytet,0,1"UTF-8"); // merr shkronjën "M"
Meqenëse po punojmë me shkronja ruse (kodimi me shumë bajtë), është më mirë të përdorim funksionin mb_substr, dhe në fund është më mirë të specifikoni kodimin e saktë të të dhënave të ndryshores ose grupit, në rastin tonë UTF-8.

Faleminderit per vemendjen! Shpresoj se informacioni ishte i dobishëm. Nëse keni pyetje, atëherë shkruani në komente.

Dhe bisedoni me ju për "të mirat" e ndryshme që mund t'ju nevojiten kur të finalizoni zgjidhjet e gatshme.

Dhe njëra prej tyre, me të cilën personalisht më duhet të takohem mjaft shpesh në punë, është renditja e vargjevephp.

Takime të tilla të shpeshta ishin për faktin se, siç tregon praktika, njerëzit pëlqejnë herë pas here, për një ndryshim, të ndryshojnë sekuencën e shfaqjes së objekteve në faqen e tyre - qofshin mallra në dyqanin online, mesazhet e përdoruesve në forum ose blloqe informacioni në faqet e kartave të biznesit.

Për fillestarët, do t'ju kujtoj vetëm dispozitat kryesore në gjuhën më të kuptueshme. Prandaj, nëse nuk e klasifikoni veten si të tillë, mund të kaloni menjëherë te shembujt e detyrave dhe mënyrat për t'i zgjidhur ato.

Një teori e vogël rreth vargjeve php

PHP është një gjuhë programimi nga ana e serverit. Bazuar në server, sepse skriptet që drejtohen nga përdoruesit përmes ndërfaqes së internetit (shfletuesi i internetit) ruhen dhe ekzekutohen në server.

Skriptet PHP janë të fshehura nga pamja e përdoruesit mesatar. Në dritaren e shfletuesve tuaj, ju shihni vetëm rezultatet e ekzekutimit të tyre.

Një grup në programim është një koleksion i disa të dhënave. Ato përbëhen nga elementë të grupit, të cilët janë çifte [indeks] => [vlera].

Vargjet mund të jenë statike, dinamike, heterogjene, etj. (një shkencë e tërë) 🙂 Për të punuar me ta, klasifikimi në njëdimensionale dhe shumëdimensionale na mjafton.

Për të kuptuar ndryshimin midis tyre, mjafton të bëni një përshkrim të strukturës së tyre.

Vargu njëdimensional php:

Array ( => 1 => 2 => 3)

php grup shumëdimensional:

Vargu ( => Vargu ( => 1) => Vargu ( => 2) => Vargu ( => 3))

E vënë re? Nëse jo, kushtojini vëmendje elementeve të grupit shumëdimensional php. Ata vetë janë vargje. ato. Një grup shumëdimensional është një koleksion vargjesh. Niveli i foleve të tyre mund të jetë arbitrarisht i madh.

Tani mendoj se është e qartë 🙂

Unë gjithashtu do të doja të theksoja veçmas konceptin e një grupi shoqërues php. Në jetën reale, ato nuk janë aq të zakonshme si zakonisht, por ende kanë një vend për të qenë.

Shkurtimisht, këto janë vargje në të cilat çelësi dhe vlera e elementit të grupit janë të lidhura pazgjidhshmërisht dhe ekziston një lidhje e caktuar logjike midis tyre që nuk duhet të prishet kurrë.

Një shembull i një grupi shoqërues është ndërtimi i mëposhtëm:

Array ( => 12 [emri] => Ivanov Ivan Ivanovich [rezultati_mesatar] => 3)

Siç mund ta shihni, këtu vlerat e çelësave dhe vlerat e elementeve të grupit janë të lidhura ngushtë dhe në asnjë rast kjo lidhje nuk duhet të prishet. Për shkak të kësaj, grupet asociative shpesh quhen "fjalor" ose "fjalor".

Prandaj, kjo veçori duhet të merret parasysh gjatë renditjes së grupit php, sepse jo të gjitha metodat janë të përshtatshme për struktura të tilla.

Në vetë PHP, vargjet krijohen në dy mënyra:

  1. $books = grup ('ABC', 'Primer', 'Fjalor); ose $books = grup('azb' => 'ABC', 'buk' => 'Abetare', 'slov' => 'Fjalor'); Opsioni i dytë përdoret kur elementi duhet të specifikojë në mënyrë eksplicite fushën kryesore (relevant për vargjet shoqëruese). Nëse nuk specifikohet, çelësat e elementit të grupit do të jenë të paracaktuar me numra. Duke filluar nga 0 (zero).
  2. $books = 'ABC'; $books = 'Abetare'; $books = 'Abetare';

Në të dyja rastet $books do të jetë një grup. Pra, nëse takoni ndërtime të tilla në kodin e faqes tuaj, nuk do të jetë më diçka e pakuptueshme për ju 🙂

Nëse dëshironi të mësoni më shumë rreth vargjeve php, atëherë ju rekomandoj të shikoni videon e mëposhtme:

Më lejoni t'ju kujtoj se për të parë strukturën e grupit në ekranin tuaj, pasi të deklaroni grupin në kodin e faqes, duhet të shkruani konstruksionin e mëposhtëm:

jehone"

"; print_r(array_var); die();

Nëse ndryshorja që printoni është një grup, atëherë teksti do të fillojë me rreshtin e mëposhtëm:

grup (...

Dhe disa fjalë të tjera për temën e artikullit tonë - renditja e vargjevephp.

Siç mund ta kuptoni, të dhënat në vargje janë të strukturuara dhe elementet janë rregulluar në një sekuencë të caktuar. Për ta ndryshuar atë, ne vetëm duhet të renditim grupin php, i cili zbatohet nga funksione të gatshme gjuhësore.

Prandaj, gjithçka që duhet të bëjmë është të thërrasim funksionin e kërkuar pas deklarimit të grupit, duke e specifikuar atë si një parametër.

Le të kalojmë në një përmbledhje të vetë funksioneve.

funksionet e renditjes së grupit php

Lista e plotë e tyre është paraqitur në dokumentacionin zyrtar të gjuhës php:

Për të renditur një grup php duke përdorur një funksion specifik, do t'ju duhet ta thërrisni atë pasi të deklaroni grupin dhe ta plotësoni atë me vlera, duke specifikuar grupin tonë si parametra për të. Për shembull:

$cars = grup ("Toyota", "Mazda", "Mitsubishi"); sort ($makina);

Le të shqyrtojmë shkurtimisht funksionalitetin e secilit prej tyre. Funksionet do të specifikohen në formatin në të cilin do të duhet të thirren në kod, d.m.th. "emri (parametri1, parametri 2, ...);".

Mos harroni të vendosni ";" pas thirrjes së funksionit, sepse pa të, një mesazh i bukur gabimi do të shfaqet në ekran 🙂

Si shembull ilustrues, le të marrim një grup të thjeshtë njëdimensional në të cilin çelësat dhe vlerat do të jenë të pa renditura në mënyrë që rezultatet e ekzekutimit të funksioneve të jenë më vizuale dhe më të kuptueshme.

Array ( => 11 => 18 => 9)

Pra, si mund të renditni një grup në rendin e duhur në php?

Funksionon një grup të thjeshtë php të renditur sipas vlerës

Nëse preferoni shikimin e materialit video sesa leximin, atëherë do të doja t'ju rekomandoja të shikoni këtë video, e cila tregon në mënyrë të kuptueshme dhe të qartë funksionet e renditjes së grupit php nga ky bllok:

Nëse pas tij keni ende pyetje, atëherë mund të gjeni informacion më të detajuar për secilin funksion më poshtë.

sort ($array, $flag);është një nga funksionet më të thjeshta dhe më të kërkuara. Ju lejon të renditni grupin në rend rritës në php, duke marrë parasysh vlerat e elementeve, d.m.th. ato do të renditen nga vlera më e vogël tek ajo më e madhja. Ai merr si parametra një variabël grupi dhe një nga flamujt e renditjes, i cili ju lejon të ndryshoni sjelljen e renditjes.

Lista e flamujve:

  • SORT_REGULAR - elementet krahasohen pa ndryshuar llojet
  • SORT_NUMERIC - elementet krahasohen si numra
  • SORT_STRING - elementet krahasohen si vargje
  • SORT_LOCALE_STRING - krahasimi i vargjeve, por duke marrë parasysh vendndodhjen aktuale.
  • SORT_NATURAL - krahasimi i vargjeve të elementeve, duke marrë parasysh rendin e tyre natyror (si natsort)
  • SORT_FLAG_CASE - renditje e pandjeshme ndaj shkronjave të vogla të elementeve të grupit php (mund të kombinohet me SORT_STRING ose SORT_NATURAL në bit OSE).

Por, në shumicën e rasteve, rezultati i ekzekutimit të funksionit është i saktë edhe pa këto flamuj specifikues. Si parazgjedhje (nëse asgjë nuk është specifikuar) do të përdoret SORT_REGULAR.

Vargu ynë i testimit pas thirrjes së funksionit sort() do të duket kështu:

Array ( => 9 => 11 => 18)

Siç mund ta shihni, pas renditjes së grupit sipas vlerave, vlerat e çelësave të tyre gjithashtu ndryshuan, sepse renditja funksionon pa ruajtur marrëdhënien çelës-vlerë, siç thuhet në dokumentacionin zyrtar të php.

Si rezultat, ky opsion është i përshtatshëm për shumicën dërrmuese të rasteve.

sort ($array, $flag);është një funksion që është antagonist i llojit. Antagonisti, sepse e rendit grupin në të njëjtën mënyrë, vetëm jo në rend rritës, por në rend zbritës, d.m.th. elementët e grupit php me vlerat më të mëdha do të shkojnë së pari.

Ju gjithashtu mund t'i kaloni dy parametra: vetë grupi dhe flamuri i renditjes, dhe ai, si renditja, është më i përshtatshëm për vargje njëdimensionale. Pas thirrjes së këtij funksioni, grupi ynë i testimit do të marrë formën e mëposhtme:

Array ( => 18 => 11 => 9)

sort ($array, $flag);është një funksion php për renditjen e një grupi sipas vlerës, mekanizmi i të cilit është gjithashtu shumë i ngjashëm me renditjen.

Me përjashtimin e vetëm që ju lejon të renditni grupin php sipas vlerës së elementeve të tij duke ruajtur marrëdhënien çelës-vlerë.

Kështu, kjo veçori është e mrekullueshme për Renditja e vargjeve shoqëruese php, d.m.th. struktura ku kjo lidhje është logjike dhe e rëndësishme.

Elementet do të renditen në rend rritës, sepse ju lejon të renditni një grup php shoqërues sipas vlerës, duke ruajtur çelësat.

Ju gjithashtu mund të kaloni dy parametra. Grupi ynë i provës do të duket si ky:

Array ( => 9 => 11 => 18)

Siç mund ta shihni, ndryshimi nga renditja është vetëm në ruajtjen e çelësave të vlerave me të cilat renditet grupi php. Kjo quhet ruajtja e marrëdhënies çelës-vlerë, e cila është jashtëzakonisht e rëndësishme kur renditni vargjet shoqëruese php.

arsort ($array, $flag);është një funksion tjetër php për të renditur një grup sipas vlerës. Asort antagonist.

Punon në të njëjtin parim si funksioni i përmendur, vetëm se renditja e grupit php në këtë rast do të jetë në rend zbritës. Gjithashtu një opsion i shkëlqyeshëm kur renditni vargjet shoqëruese php.

Pas thirrjes së këtij funksioni, shembulli ynë do të duket si ky:

Array ( => 18 => 11 => 9)

Funksionet e avancuara të renditjes së grupit php sipas vlerës

Ky bllok funksionesh, ndryshe nga ato të mëparshmet, që ju lejuan të ndryshoni rendin në rend zbritës/rritës, do t'ju lejojë të shtoni shumëllojshmëri dhe të renditni elementë në sekuenca të ndryshme të ndryshme nga ato "tradicionale".

Kjo veçori i bën ato të përshtatshme për zgjidhjen e detyrave të ndryshme jo standarde, ndonjëherë shumë interesante 🙂

natsort ($array);- ky funksion sjell shumëllojshmëri në familjen e zgjidhjeve të llojit, pasi mekanizmi i punës së tij është thelbësisht i ndryshëm nga ata. natsort ka vetëm një parametër të vetëm hyrës - është një grup për t'u renditur, vlerat e të cilit do të renditen në rendin e njohur për një person. Një algoritëm i tillë quhet "renditja natyrore", që në rusisht do të thotë "rend natyror". Për të kuptuar kuptimin e kësaj deklarate, ne do të marrim një grup tjetër si shembull:

Array ( => student5 => student1 => student10)

Përveç kësaj, funksioni natsort ruan marrëdhënien çelës-vlerë. Prandaj, ne do ta krahasojmë punën e tij me asort, i cili është sa më i ngjashëm me të. Pas thirrjes së të fundit, grupi ynë do të marrë formën e mëposhtme:

Vargu ( => student1 => student10 => student5)

Nëse e quani natsort, atëherë grupi që rezulton do të jetë si ky:

Array ( => student1 => student5 => student10)

Unë mendoj se ndryshimi tani është i dukshëm për ju dhe parimi i natsort do të jetë i qartë për ju :-)

shuffle ($array);- një funksion i mrekullueshëm dhe shumë i dobishëm me të cilin mund të përzieni një grup php dhe t'i vendosni elementet e tij në mënyrë të rastësishme.

Është shumë i përshtatshëm kur ju duhet të vendosni mallrat e një dyqani online në një kategori ose në një faqe tjetër në një renditje të rastësishme, ose kur shkoni në një sit të kartës së biznesit, u tregoni përdoruesve blloqe të ndryshme informacioni çdo herë në një sekuencë të ndryshme.

Në këtë rast, marrëdhënia çelës-vlerë nuk ruhet. Kjo do të thotë, grupi i përdorur nga ne në shembullin e mëparshëm, për mua personalisht, mori formën:

Vargu ( => student10 => student5 => student1)

Për më tepër, pas çdo thirrjeje funksioni, rendi i elementeve do të jetë i ndryshëm.

Funksionet e konsideruara nga ne më parë janë mjaft të thjeshta dhe mekanizmi i punës së tyre është i qartë. Një grup kalohet si parametër, përmbajtja e të cilit duhet të renditet sipas vlerave të elementeve të tij, si dhe një flamur që mund të ndryshojë sjelljen e renditjes (mund të bëni me siguri pa të).

Në mesin e programuesve, është mjaft popullor, sepse. ju lejon të zgjidhni çdo detyrë që lidhet me renditjen (duke përdorur një shumëllojshmëri algoritmesh) me ndihmën e funksionit të saj.

Një nga këto detyra është php në fushën e kërkuar.

Për t'ju treguar vizualisht se si funksionojnë funksionet e mëposhtme, për shembull, merrni grupin e mëposhtëm:

Vargu ( => Vargu ( => 32) => Vargu ( => 11) => Vargu ( => 27))

Siç mund ta shihni, është shumëdimensionale, sepse elementet e tij janë vargje, struktura e të cilave është identike: të gjithë kanë një fushë me çelësin "id". Dhe tani detyra jonë është t'i renditim këta elementë në rend rritës, d.m.th. në mënyrë që elementet në grupin kryesor të vendosen në përputhje me vlerën e fushave në nënvargje.

Eshtë e panevojshme të thuhet se është një problem mjaft i zakonshëm. Funksionet e mëposhtme do të na ndihmojnë ta zgjidhim atë:

usort ($array, 'funksion');- Funksioni PHP për renditjen e një grupi shumëdimensional sipas fushës së dëshiruar.

Ju lejon të renditni elementet e një grupi php pa ruajtur një marrëdhënie çelës-vlerë në përputhje me një funksion të përcaktuar nga përdoruesi, emri i të cilit kalohet si parametër i dytë kur thirrni usort.

Vetë funksioni përshkruhet veçmas. Për shembullin tonë, për të renditur elementet e një grupi php shumë-dimensionale sipas fushës ['id'] në rend rritës, funksioni i personalizuar do të duket si ky:

Funksioni myCmp($a, $b) (nëse ($a["id"] == $b["id"]) kthe 0; kthe $a["id"] > $b["id"] ? 1 : -një;)

Gjithçka që na duhet tani për të filluar renditjen është të bëjmë një thirrje te usort($array, 'myCmp'); në vendin e duhur në kod. Përcakton emrin e variablit të grupit si parametër të parë.

Si rezultat, ne do të marrim sa vijon:

Vargu ( => Vargu ( => 11) => Vargu ( => 27) => Vargu ( => 32))

uasort ($array, 'funksion');- një funksion tjetër php për renditjen e një grupi shumëdimensional sipas fushës së dëshiruar.

Funksionon në mënyrë të ngjashme me përdorimin, por ruan një marrëdhënie çelës-vlerë, duke e bërë atë të përshtatshëm për renditjen e grupeve shoqëruese shumëdimensionale.

Funksioni i personalizuar për shembullin tonë do të jetë i njëjtë. Rezultatet e ekzekutimit të tij do të duken kështu:

Vargu ( => Vargu ( => 11) => Vargu ( => 27) => Vargu ( => 32))

Për të ndryshuar renditjen e elementeve dhe për të bërë disa transformime shtesë të të dhënave, do të jetë e nevojshme të modifikoni funksionin e përcaktuar nga përdoruesi, siç mund ta keni marrë me mend vetë 🙂

Për shembull, nëse vargjet tuaja, të cilat janë elemente të burimit, do të përmbajnë një fushë ['emri'] me një vlerë vargu, atëherë një funksion i personalizuar për renditjen e një grupi shumëdimensional php sipas kësaj fushe në rend rritës do të duket kështu:

Funksioni myCmp($a, $b) (nëse (strcasecmp($a["emri"], $b["person"]["emri"]) == 0) kthe 0; kthe strcasecmp($a["emri "], $b["emri"]) > 0 ? 1: -1; )

Renditja e vargjeve php duke përdorur funksione të personalizuara nuk është opsioni më i lehtë, por është shumë fleksibël në personalizim dhe nëse e zotëroni atë, do të bëhet zgjidhja juaj e preferuar.

array_multisort ($array1, $array2, $flag);- në fund, ruaja funksionin më të tmerrshëm dhe të errët php për renditjen e një grupi. Duhen dy vargje si hyrje dhe të njëjtat flamuj renditjeje që mund të specifikoni me funksione të ngjashme me renditjen. Array_multisort funksionon si më poshtë: parametri i parë është grupi që do të renditet, grupi i dytë është radha e renditjes së të parit, pas së cilës grupi i dytë renditet sipas analogjisë me të parin. Në vend të një grupi që përfaqëson rendin e renditjes, mund të përdorni konstantet SORT_DESC për të renditur grupin në rend zbritës dhe SORT_ASC në rend rritës. Për gjithë këtë konfuzion, ju ende mund të shtoni flamuj të renditjes që mund të vijnë pas të gjitha grupeve.

$libra = grup (32, 11, 27); $sort_array = grup (1, 2, 3); array_multisort ($libra, $sort_array);

Në këtë shembull, unë kam renditur një grup të thjeshtë njëdimensional $books sipas grupit $sort_array. Si rezultat, grupi i parë mori formën e mëposhtme:

Array ( => 11 => 27 => 32)

Dhe e dyta shkoi kështu:

Array ( => 2 => 3 => 1)

Dmth është renditur sipas të parës. Këtu është një majdanoz i tillë 🙂

Mësoni më shumë rreth array_multisort në videon e mëposhtme. Gjithashtu atje do të gjeni shembuj shtesë të përdorimit të tij:

Ky funksion mund të përdoret gjithashtu për të renditur vargje shumëdimensionale:

$libra = grup(array(32), grup(11), grup(27)); $sort_array = grup (1, 2, 3); array_multisort ($libra, $sort_array);

Grupi $books do të duket kështu:

Vargu ( => Vargu ( => 11) => Vargu ( => 27) => Vargu ( => 32))

Në të njëjtën kohë, në këtë funksion, mund të specifikoni disa vargje, të renditura sipas disa fushave. Në këtë rast, rezultatet e renditjes së grupeve të mëparshme do të ndikojnë në ato të mëvonshme, të cilat përfundimisht do të çojnë në renditjen e më të fundit sipas kritereve të ndryshme.

Këtu është një lloj "topi i borës" në php.

Kur renditni një grup php duke përdorur këtë funksion, lidhja çelës-vlerë ruhet për vargjet shoqëruese, por jo për ato numerike.

Programuesit që kanë testuar funksionimin e funksioneve të ndryshme vërejnë se kur renditni një grup shumëdimensional, php array_multisort tregon rezultate më të mira se sa usort.

Por array_multisort nuk do të jetë në gjendje të trajtojë të gjitha detyrat që mund të bëjë usort. Për shembull, e njëjta gjë renditja e një grupi shumëdimensionalphp sipas fushës së kërkuar. Pra, në secilin rast individual, ju duhet të analizoni shanset tuaja për sukses kur përdorni një ose një dizajn tjetër.

Personalisht, mund të them se nuk më pëlqen pak array_multisort për shkak të kompleksitetit të tij dhe rritjes së tendosjes së trurit që vjen me përpjekjen për të përfaqësuar grupin përfundimtar të renditur me të.

Ndaj, përpiqem të mos e përdor pa nevojë, duke preferuar funksione më të thjeshta dhe më të thjeshta, të cilat ju inkurajoj t'i bëni edhe ju 🙂

Funksionet që diskutuam më parë ju lejojnë të renditni vargjet në php sipas vlerës së elementeve. Le të flasim se si mund të kryeni një veprim të ngjashëm në çelësat e elementeve.

PHP funksionon për të renditur grupin sipas çelësit

Përpara se të kalojmë në një përmbledhje të funksioneve të këtij grupi, do të doja të them se të gjithë kanë një gjë të përbashkët - të gjithë mbajnë një marrëdhënie kyç-vlerë. Ndryshe, në fakt, nuk mund të ishte, sepse. atëherë nuk do të kishin kuptim.

E tillë është veçoria. Le të shqyrtojmë çdo funksion në më shumë detaje.

ksort ($array, $flag);- funksioni është një analog i asortimentit, vetëm renditja e elementeve në grup do të ndodhë jo me vlera, por me çelësa.

Ky konstrukt ka dy parametra hyrës: një grup php që do të renditet dhe një nga flamujt e renditjes, një listë të plotë të të cilave mund ta gjeni në përshkrimin e funksionit të renditjes (përdorimi i tij është opsional). Ky funksion php ju lejon të renditni një grup në rend rritës.

Për të demonstruar punën e tij, le të kthehemi te shembulli i përshkruar në fillim të artikullit:

Array ( => 11 => 18 => 9)

Nëse e renditni duke përdorur ksort, atëherë si rezultat do të marrë formën e mëposhtme:

Array ( => 18 => 9 => 11)

Unë mendoj se gjithçka është e thjeshtë dhe e qartë.

krssort ($array, $flag);- një funksion tjetër php për renditjen e një grupi sipas çelësit, shumë i ngjashëm me atë të mëparshëm.

I vetmi ndryshim është se ai rendit grupin php në rend zbritës. Dmth është antagonist i ksortit, ashtu si rsort është për sort.

Ai gjithashtu ka dy parametra të hyrjes: grupin që do të renditet dhe një nga çelësat. Pas ekzekutimit të tij, shembulli ynë do të duket si ky:

Array ( => 11 => 9 => 18)

Mendoj se komentet janë të panevojshme 🙂

ukrsort ($array, 'funksion');- një analog i funksionit php të përmendur më parë për renditjen e një grupi sipas çelësit - usort.

Punon në të njëjtin parim: ruan marrëdhënien çelës-vlerë dhe grupi php renditet sipas funksionit të përcaktuar nga përdoruesi, emri i të cilit kalohet si parametër i dytë. Parametri i parë është i pandryshueshëm - është grupi që do të renditet.

Dallimi nga usort është se renditja ndodh sipas çelësave të elementeve.

Le të përdorim shembullin e mëposhtëm për të ilustruar se si funksionon ky funksion:

Array ( => 40 => 0 => 10)

Për shembull, ne duhet të renditim një grup php sipas çelësit në rend rritës. Në këtë rast, funksioni i personalizuar do të duket kështu:

Funksioni myCmp($a, $b) (nëse ($a == $b) kthe 0; kthe $a< $b ? 1: -1; }

Si rezultat, grupi ynë do të duket si ky:

grup ( => 0 => 10 => 40)

Një plus i caktuar i përdorimit të këtij funksioni është se ai mund të përdoret për të renditur grupin php sipas disa veçorive ose algoritmeve të pazakonta.

Ju kujtoj se duhet ta përdorni vetëm kur çelësat e elementeve të grupit mbajnë një lloj ngarkese semantike. Përndryshe, është më mirë të përdorni usort ose funksione të tjera më të thjeshta.

Kështu që artikullit tonë i ka ardhur fundi (sikur e keni lexuar deri këtu) 🙂

Në të, u përpoqa të përshkruaj sa më thjesht dhe në të njëjtën kohë qartë dhe plotësisht të gjitha mënyrat e mundshme të renditjes së llojeve të ndryshme të vargjeve në php, duke i përforcuar fjalët e mia me shembuj.

E pranoj që botimi doli mjaft voluminoz dhe i vështirë për një lexim të njëhershëm. Por sa herë që keni nevojë Renditja e grupit php, gjithmonë mund t'i referoheni këtij artikulli për një përshkrim të funksionit që ju nevojitet dhe të shihni shembuj të përdorimit të tij.

Shpresoj se informacioni ishte i dobishëm për ju 🙂

Abonohu ​​në përditësimet e projektit dhe

Artikujt kryesorë të lidhur