Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Savjet
  • Sortiranje niza po abecedi php. Sortiranje niza u php-u

Sortiranje niza po abecedi php. Sortiranje niza u php-u

Zadnja izmjena: 1.11.2015

is_array funkcija

Funkcija is_array() provjerava je li varijabla niz, i ako jest, vraća true, inače vraća false. Na primjer:

$isar = je_niz($tehnika); echo ($isar==true)?"this is an array":"ovo nije niz";

count/sizeof funkcije

Funkcije count() i sizeof() dobivaju broj elemenata u nizu:

$broj = broj($tehnika); // isto kao // $number = sizeof($technics); echo "U technics nizu ima $broj elemenata";

shuffle funkcije

Funkcija shuffle nasumično miješa elemente niza:

$os = array("Windows 95", "Windows XP", "Windows Vista", "Windows 7", "Windows 8", "Windows 10"); miješanje($os); ispis_r($os); // jedna od mogućih opcija // Niz ( => Windows 95 => Windows 7 => Windows Vista => Windows XP => Windows 10 => Windows 8)

Kompaktne funkcije

Kompaktna funkcija omogućuje stvaranje asocijativnog niza iz skupa varijabli, gdje su sami nazivi varijabli ključevi:

Apple II => Apple => 1978) ?>

Kompaktna funkcija prima skup varijabli u zagradama. Svaka varijabla navedena je u navodnicima bez znaka $. Rezultat funkcije je novi niz.

Sortiranje nizova

U PHP-u postoje dvije vrste sortiranja: sortiranje znakovnih nizova po abecedi i sortiranje brojeva uzlazno/silazno. Ako sortirane vrijednosti predstavljaju nizove, onda su poredane po abecedi, ako su brojevi, onda su poredane uzlaznim redoslijedom brojeva. PHP prema zadanim postavkama bira vlastitu vrstu sortiranja.

Za sortiranje uzlaznim redoslijedom upotrijebite funkciju sortiranja:

"Lenovo IdeaTab A3500", "samsung" => "Samsung Galaxy Tab 4", "apple" => "Apple iPad Air"); sortiraj($tablete); jeka "

    "; foreach ($tablets kao $key => $value) ( ​​​​echo "
  • $ključ: $vrijednost
  • "; ) jeka "
"; ?>

U ovom slučaju, vrijednosti niza predstavljaju nizove, tako da će PHP odabrati sortiranje po abecedi. Međutim, korištenjem dodatnog parametra, PHP interpreteru možemo eksplicitno reći koju vrstu uspoređivanja da koristi. Ovaj parametar može imati tri vrijednosti:

    SORT_REGULAR: automatski odabir sortiranja

    SORT_NUMERIC: numeričko sortiranje

    SORT_STRING: poredaj po abecedi

Eksplicitno naznačimo vrstu sortiranja:

Razvrstaj($tablete, SORT_STRING);

Za sortiranje niza obrnutim redoslijedom upotrijebite funkciju arsort:

Arsort($tablete);

Razvrstavanje po ključevima

Funkcija sortiranja sortira po vrijednostima elemenata, ali postoji i sortiranje po ključevima. Predstavlja se funkcijom ksort:

Ksort($tablets, SORT_STRING);

Sortiranje po ključevima obrnutim redoslijedom vrši funkcija krsort():

Krsort($tablete);

Prirodno sortiranje

Iako gore opisane funkcije sortiranja dobro rade svoj posao, njihove mogućnosti još uvijek nisu dovoljne. Na primjer, poredajmo sljedeći niz uzlaznim redoslijedom:

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

Budući da vrijednosti predstavljaju nizove, PHP sortira po abecedi. Međutim, ovo sortiranje ne uzima u obzir brojeve i velika i mala slova. Stoga će vrijednost "Windows 10" doći na samom početku, a ne na kraju, kako bi trebalo biti. A kako bi riješio ovaj problem, PHP ima funkciju natsort(), koja izvodi prirodno sortiranje:

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

Ako također trebamo da sortiranje ne razlikuje velika i mala slova, tada možemo koristiti funkciju natcasesort().

Sortiranje je jedan od najvažnijih postupaka pri radu s nizovima. Da biste razumjeli njegovu važnost, dovoljno je sjetiti se radnji kao što je, na primjer, sortiranje filmova abecednim redom ili sortiranje bilo koje cijene uzlaznim ili silaznim redoslijedom itd. Slažem se, vrlo uobičajene akcije za razne aplikacije! Danas ćemo govoriti o tome kako sortirati elemente niza prema određenim uvjetima.

Dakle, sortiranje olakšava rad s nizovima. Kada su elementi poredani, lakše ih je pronaći i izvršiti potrebne radnje s njima, na primjer, one o kojima sam pisao gore. Sve ovisi o zadatku s kojim se suočavate.

Zadaci mogu biti drugačiji, ali alati koje ćemo koristiti ostat će standardni. Ovi alati su posebne funkcije koje se koriste za sortiranje elemenata niza.

Postoji nekoliko ovih funkcija u PHP-u, a koju ćete koristiti opet ovisi o specifičnom zadatku, kao io tome je li vaš niz asocijativni niz ili niz popisa.

Pogledajmo ove funkcije na primjerima i vidimo kako rade.

Poredaj popise nizova abecednim i obrnutim redoslijedom

Prvo, upoznajmo se s prilično jednostavnom i razumljivom funkcijom vrsta().

To će nam omogućiti sortiranje elemenata niza uzlaznim redoslijedom ili, ako su ti elementi elementi niza, abecednim redom.

Njegova primjena je prilično jednostavna. Da bismo testirali ovu funkciju, samo trebamo deklarirati niz, zatim koristiti funkciju za sortiranje njegovih elemenata i prikazati rezultat na ekranu da vidimo što će se dogoditi.

$Mass = array("Katya", "Anya", "Lena", "Andrey"); sortiraj($Masa); print_r($Masa); ?>

A rezultat će biti sljedeći. Kao što možete vidjeti na snimci zaslona desno, stavke su poredane abecednim redom. Ako umjesto elemenata niza imamo brojeve, tada će ova funkcija također sortirati brojeve u rastućem redoslijedu. To možete sami provjeriti.

Postoji i funkcija koja radi suprotno, to jest razvrstava elemente niza silaznim ili obrnutim abecednim redoslijedom.

Ova funkcija se zove rsort(). Djeluje ovako:

$Mass = array("Katya", "Anya", "Lena", "Andrey"); rsort($Masa); print_r($Masa); ?>

Kao što vidite, sada je rezultat potpuno suprotan. Elementi niza poredani su silaznim redoslijedom, što u ovom slučaju znači obrnutim abecednim redoslijedom.

Mislim da je s ovim funkcijama sve vrlo jasno. Testirajte ih sa svojim nizovima i nećete imati pitanja.

Sortiranje asocijativnih nizova

Sve je super, ali s asocijativnim nizovima više nećemo moći koristiti te funkcije jer prekidaju vezu između vrijednosti i ključa polja. Stoga se moramo upoznati s još nekim funkcijama koje će nam omogućiti sortiranje asocijativnih nizova.

Kao što znamo, asocijativni nizovi imaju ključeve i vrijednosti. Posljedično, sortiranje se može izvršiti po ključevima ili po vrijednostima.

Počnimo s sortiranjem po vrijednostima.

Kako bismo sortirali vrijednosti asocijativnog niza abecednim redom, koristit ćemo funkciju sortiraj().

Da biste to učinili, prvo stvorite asocijativni niz, primijenite funkciju i prikažite rezultat na zaslonu.

$Mass["one"]="Katja"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="Rita"; sortiraj($Masa); print_r($Masa); ?>

Kao što vidite, vrijednosti asocijativnog niza poredane su abecednim redom, ali je njihova veza s ključevima sačuvana.

Funkcija radi na isti način sortiraj(), osim što razvrstava vrijednosti asocijativnog niza obrnutim redoslijedom.

$Mass["one"]="Katja"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="Rita"; arsort($Masa); print_r($Masa); ?>

Ovdje ponovno možemo vidjeti da vrijednosti elementa niza zadržavaju svoju povezanost s ključevima, ali su sortirane obrnutim redoslijedom.

Isti asocijativni niz možemo sortirati po ključevima.

Kao što ste vjerojatno već pogodili, to se može učiniti abecednim ili obrnutim redoslijedom.

Kako bismo poredali niz po ključevima abecednim redom, potrebna nam je funkcija ksort().

$Mass["one"]="Katja"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="Rita"; ksort($Masa); print_r($Masa); ?>

Niz je poredan po ključevima abecednim redom.

Za sortiranje niza po ključevima obrnutim redoslijedom upotrijebite funkciju krsort().

$Mass["one"]="Katja"; $Mass["two"]="Boris"; $Mass["three"]="Anya"; $Mass["four"]="Rita"; krsort($Masa); print_r($Masa); ?>

Mislim da je sve jasno na snimku zaslona.

Prilagođeno sortiranje

Također možemo postaviti vlastiti redoslijed sortiranja, odnosno kreirati prilagođeno sortiranje.

PHP također nudi posebne funkcije za to.

Postoji funkcija za prilagođeno sortiranje popisa usort().

Bit će potrebna dva argumenta. Prvi argument je naš niz; drugi argument će sadržavati naziv funkcije koja uspoređuje dva elementa.

Funkcija usporedbe će uzeti dvije varijable i trebala bi vratiti jednu od sljedećih vrijednosti:

1 – ako je prvi element usporedbe veći od drugog;

-1 – ako je drugi veći od prvog;

0 – ako su elementi jednaki.

Na taj način, na primjer, možemo sortirati elemente niza prema rastućoj duljini.

Da bismo to učinili, prvo deklariramo sam niz koji će sadržavati elemente niza različitih duljina.

Nakon toga koristit ćemo funkciju za prilagođeno sortiranje usort(). Proslijedit ćemo ga kao argumente: naziv našeg polja i naziv funkcije koju smo stvorili za usporedbu elemenata.

Nakon svega ovoga, možemo prikazati rezultat na ekranu kako bismo bili sigurni da su naši elementi poredani uzlaznim redoslijedom njihove duljine.

$Mass = array("Andrey", "Yana", "Katya"); funkcija check_length($str1,$str2)( $length1 = strlen($str1); $length2 = strlen($str2); if($length1 == $length2): vrati 0; elseif($length1

Dobivamo sljedeći rezultat. Elementi našeg niza poredani su prema rastućoj duljini.

Također možemo napraviti prilagođeno sortiranje asocijativnog niza po njegovim ključevima. Za ovo nam je potrebna funkcija uksort() i sam asocijativni niz.

Ostavimo custom funkciju istom, odnosno usporedimo duljinu tipki.

Ključevi elementa polja poredani su uzlaznim redoslijedom njihove duljine.

Također možemo stvoriti prilagođenu sortu asocijativnog niza prema vrijednostima njegovih elemenata. U tome će nam pomoći funkcija uasort().

Princip je i dalje isti.

$Mass["one"]="yana"; $Mass["two"]="andrey"; $Mass["three"]="katya"; funkcija check_length($str1,$str2)( $length1 = strlen($str1); $length2 = strlen($str2); if($length1 == $length2): vrati 0; elseif($length1

Niz je sada sortiran prema rastućim duljinama svojih vrijednosti.

Naravno, korisnička funkcija može biti drugačija, na primjer, može baciti vrijednosti u zajednički registar ili raditi neke druge stvari.

Da biste temeljito razumjeli kako funkcionira prilagođeno sortiranje, trebate vježbati i pokušati napisati neku vlastitu funkciju usporedbe.

Međutim, sada mislim da potpuno razumijete kako možete sortirati elemente niza i kako koristiti te sortirane elemente.

Vježbajte, napišite svoje komentare i podijelite članak s prijateljima pomoću gumba društvenih mreža.

Ako se još niste pretplatili na ažuriranja bloga, pretplatite se. Obrazac za pretplatu je ispod.

S vama je bila Anna Kotelnikova. Vidimo se u sljedećim člancima.

Kada radite na mnogim stranicama, često se postavlja pitanje sortiranja podataka niza abecednim redom. Mnogi ljudi za to pišu dodatne nizove, uspoređuju velike tablice i ponavljaju svako ime... Ova opcija nije najbolja, iako ćemo i nju razmotriti. U ovom članku želim predložiti najjednostavniji i najkraći način, koji se, ako pažljivo pročitate priručnike, može pronaći u dokumentaciji.

Abecedni niz PHP

Metoda je prilično jednostavna i sastoji se od dva koraka: postavljanje lokalne postavke (setlocal) i izravno sortiranje niza. Pogledajmo primjer s komentarima.

PHP kod

setlocale(LC_ALL, "Ruska_Rusija.1251"); // postavite lokalizaciju za ruska slova

// primjer niza u kojem riječi NISU poredane
$example=array("jar","Boris","view","upitnik","čuvar igre","Fedor","supruga","glas");

Natcasesort($example, SORT_LOCALE_STRING); // sortiraj niz BEZ osjetljivosti na velika i mala slova
// DA BISTE RAZVIJALI VELIKA I MALIA MELINA, koristite sort umjesto natcasesort

// prikaz rezultata
foreach ($example as $key => $value)(
echo "$value "; // prikaz samo riječi, bez indeksa
}
?>

Demonstracija Preuzmite izvore
U demonstraciji možete vidjeti skriptu na djelu. Ako želite, također možete preuzeti arhivu s datotekom.

Ako vaš poslužitelj nije u sustavu Windows, morat ćete instalirati druge lokalizacije ili nekoliko odjednom:

(LC_SVE,"ru_RU.CP1251", "rus_RUS.CP1251", "Russian_Russia.1251");!}
// Ispisuje ru_RU.CP1251 za FreeBSD
// Ispisuje rus_RUS.CP1251 za Linux
// Ispis Russian_Russia.1251 za Windows

Unaprijed ću odgovoriti na jedno od pitanja - lokalizacija za Ukrajinu u PHP-u izgleda ovako:


Kako postaviti lokalizaciju za druga kodiranja u PHP-u?

// Instalirajte lokalne postavke za Windows

// Windows kodiranje-1251
setlocale(LC_ALL, "Ruska_Rusija.1251");

// Kodiranje KOI8-R
setlocale(LC_ALL, "Ruska_Rusija.20866");

// UTF-8 kodiranje (koristite pažljivo)
setlocale(LC_ALL, "Ruska_Rusija.65001");
?>

Drugi način za sređivanje niza abecednim redom PHP

Ako vam ova metoda ne odgovara i želite ići težim putem, stvorite niz poput ovog:

PHP kod

=> a
=> b
=> u
=> r
=> d
=> e
=> ë
=> w
=> s
=> i
=> th
=> do
=> l
=> m
=> n
=> o
=> str
=> str
=> s
=> t
=> g
=> f
=> x
=> ts
=> h
=> w
=> sch
=> ʺ
=> s
=> b
=> uh
=> yu
=> ja
I iterirajte preko drugog niza po prvom slovu.
Prvo slovo bilo kojeg elementa niza izračunavamo na sljedeći način:

PHP kod

$city="Moskva"; // na primjer element s indeksom 1

$prvo_slovo = mb_substr($city,0,1,"UTF-8"); // dobijemo slovo "M"
Budući da radimo s ruskim slovima (višebajtno kodiranje), bolje je koristiti funkciju mb_substr, a na kraju je bolje navesti točno kodiranje varijable ili polja podataka, u našem slučaju UTF-8.

Hvala na pozornosti! Nadam se da je informacija bila korisna. Ako imate pitanja, pišite u komentarima.

I razgovarati s vama o raznim "dobrotinama" koje bi vam mogle zatrebati prilikom dovršavanja gotovih rješenja.

A jedan od njih, s kojim se osobno često susrećem na poslu, jest sortiranje nizovaphp.

Takvi česti sastanci nastali su zbog činjenice da, kao što pokazuje praksa, ljudi vole s vremena na vrijeme, za promjenu, promijeniti redoslijed prikazivanja objekata na svojoj web stranici - bilo da se radi o proizvodima u internetskoj trgovini, porukama korisnika na forumu, ili blokovi informacija na stranicama s posjetnicama.

Za početnike ću vas samo podsjetiti na glavne odredbe na najrazumljivijem jeziku. Stoga, ako se ne smatrate jednim od takvih, možete odmah prijeći na primjere problema i načine njihovog rješavanja.

Malo teorije o php nizovima

PHP je programski jezik na strani poslužitelja. Na poslužitelju, jer se skripte koje korisnici pokreću putem web sučelja (internetski preglednik) pohranjuju i izvršavaju na poslužitelju.

PHP skripte skrivene su od pogleda prosječnog korisnika. U prozoru preglednika vidite samo rezultate njihovog izvršenja.

Niz u programiranju je skup nekih podataka. Sastoje se od elemenata niza, koji su parovi [indeks] => [vrijednost].

Nizovi mogu biti statični, dinamički, heterogeni itd. (cijela jedna znanost) 🙂 Za rad s njima sasvim je dovoljna podjela na jednodimenzionalne i višedimenzionalne.

Da biste razumjeli razliku između njih, dovoljno je dati opis njihove strukture.

Jednodimenzionalni php niz:

Niz ( => 1 => 2 => 3)

PHP višedimenzionalni niz:

Niz ( => Niz ( => 1) => Niz ( => 2) => Niz ( => 3))

Jeste li primijetili? Ako nije, obratite pozornost na elemente php višedimenzionalnog niza. Oni su sami nizovi. Oni. Višedimenzionalni niz je zbirka nizova. Razina njihovog gniježđenja može biti koliko god želite.

Sada mislim da je definitivno jasno :)

Također bih želio posebno istaknuti koncept asocijativnog niza u PHP-u. U stvarnom životu nisu tako česti kao obični, ali se ipak javljaju.

Ukratko, to su nizovi u kojima su ključ i vrijednost elementa niza neraskidivo povezani i između njih postoji određena logička veza koja se ni pod kojim uvjetima ne može prekinuti.

Primjer asocijativnog niza je sljedeća konstrukcija:

Niz ( => 12 [puno ime] => Ivanov Ivan Ivanovič [prosječna_rezultat] => 3)

Kao što vidite, ovdje su vrijednosti ključeva i vrijednosti elemenata niza usko povezane i ni u kojem slučaju se ta veza ne smije prekinuti. Zbog toga se asocijativni nizovi često nazivaju "rječnici" ili "imenici".

Stoga se ova značajka mora uzeti u obzir prilikom sortiranja PHP niza, jer Nisu sve metode prikladne za takve strukture.

U samom PHP-u nizovi se stvaraju na dva načina:

  1. $books = array(‘ABC’, ‘Primer’, ‘Rječnik’); ili $books = array(‘azb’ => ‘ABC’, ‘buk’ => ‘Bukvar’, ‘slov’ => ‘Rječnik’); Druga se opcija koristi kada element treba eksplicitno naznačiti ključno polje (relevantno za asocijativne nizove). Ako to ne navedete, ključevi elementa niza bit će prema zadanim postavkama brojevi. Počevši od 0 (nula).
  2. $knjige = 'ABC'; $books = 'Bukvar'; $books = 'Bukvar';

U oba slučaja, $books će biti niz. Dakle, ako naiđete na takve konstrukcije u kodu svoje stranice, to vam više neće biti nešto neshvatljivo :)

Ako želite detaljnije naučiti o PHP nizovima, preporučujem sljedeći video:

Dopustite mi da vas podsjetim da kako biste vidjeli strukturu niza na svom ekranu, nakon deklariranja niza u kodu stranice, morate napisati sljedeću konstrukciju:

Jeka"

"; print_r(array_variable); die();

Ako je varijabla koju ispisujete niz, tekst će započeti sljedećim retkom:

Niz (...

I još nekoliko riječi o temi našeg članka - sortiranje nizovaphp.

Kao što možete razumjeti, podaci u nizovima su strukturirani i elementi su raspoređeni u određenom nizu. Da bismo ga promijenili, potrebno nam je samo PHP sortiranje polja, koje je implementirano gotovim jezičnim funkcijama.

Stoga, sve što trebamo učiniti je pozvati potrebnu funkciju nakon deklaracije niza, navodeći ga kao parametar.

Prijeđimo na pregled samih funkcija.

php funkcije sortiranja polja

Njihov potpuni popis predstavljen je u službenoj dokumentaciji php jezika:

Kako biste razvrstali PHP niz pomoću određene funkcije, morat ćete je pozvati nakon što ste deklarirali niz i ispunili ga vrijednostima, navodeći naš niz kao parametre. Na primjer:

$automobili = niz("Toyota", "Mazda", "Mitsubishi"); sortiraj($automobili);

Ukratko razmotrimo funkcionalnost svakog od njih. Funkcije će biti navedene u formatu u kojem će se trebati pozvati u kodu, tj. "ime(parametar1, parametar2, ...);".

Ne zaboravite staviti “;” nakon poziva funkcije, jer bez toga će se na ekranu pojaviti lijepa poruka o pogrešci :)

Kao ilustrativni primjer, uzmimo jednostavan jednodimenzionalni niz u kojem će i ključevi i vrijednosti biti neuređeni tako da su rezultati izvršavanja funkcija vizualniji i razumljiviji.

Niz ( => 11 => 18 => 9)

Dakle, kako možete sortirati niz željenim redoslijedom u PHP-u?

Funkcije za jednostavno sortiranje php polja po vrijednosti

Ako više volite gledati video materijal nego čitati, onda bih vam preporučio da pogledate ovaj video, koji jasno i jasno demonstrira rad PHP funkcija sortiranja polja iz ovog bloka:

Ako nakon ovoga još uvijek imate pitanja, u nastavku možete pronaći detaljnije informacije o svakoj funkciji.

sortiraj($niz, $zastavica);- jedna od najjednostavnijih i najpopularnijih funkcija. Omogućuje sortiranje niza uzlaznim redoslijedom u php-u, uzimajući u obzir vrijednosti elemenata, tj. oni će biti poredani od najmanjih prema najvećim vrijednostima. Uzima varijablu polja i jednu od zastavica za sortiranje kao parametre, što vam omogućuje promjenu ponašanja sortiranja.

Popis zastava:

  • SORT_REGULAR – elementi se uspoređuju bez promjene tipova
  • SORT_NUMERIC – elementi se uspoređuju kao brojevi
  • SORT_STRING – elementi se uspoređuju kao nizovi
  • SORT_LOCALE_STRING – usporedba nizova, ali uzimajući u obzir trenutni lokalitet.
  • SORT_NATURAL – usporedba nizova elemenata, uzimajući u obzir njihov prirodni poredak (kao natsort)
  • SORT_FLAG_CASE – sortiranje elemenata php niza bez obzira na velika i mala slova (može se kombinirati s SORT_STRING ili SORT_NATURAL bitwise OR).

Ali, u većini slučajeva, rezultat izvršavanja funkcije je točan čak i bez ovih razjašnjavajućih oznaka. Prema zadanim postavkama (ako ništa nije navedeno) koristit će se SORT_REGULAR.

Naš testni niz nakon poziva funkcije sort() izgledat će ovako:

Niz ( => 9 => 11 => 18)

Kao što vidite, nakon sortiranja niza po vrijednostima, promijenile su se i vrijednosti njihovih ključeva, jer sort radi bez očuvanja odnosa ključ-vrijednost, kao što je navedeno u službenoj php dokumentaciji.

Kao rezultat toga, ova je opcija prikladna za veliku većinu slučajeva.

rsort($niz, $zastavica);— funkcija koja je antagonist vrste. Antagonist, jer razvrstava niz na isti način, samo ne uzlaznim, već opadajućim, tj. Prvi će ići elementi php polja s najvećim vrijednostima.

Također mu možete proslijediti dva parametra: sam niz i oznaku sortiranja, a, kao i sortiranje, prikladniji je za jednodimenzionalne nizove. Naš testni niz nakon poziva ove funkcije poprimit će sljedeći oblik:

Niz ( => 18 => 11 => 9)

sortiraj($niz, $zastavica); je PHP funkcija za sortiranje polja prema vrijednosti, čiji je mehanizam također vrlo sličan sortiranju.

Jedina iznimka je to što vam omogućuje sortiranje php niza prema vrijednosti njegovih elemenata uz zadržavanje odnosa ključ-vrijednost.

Stoga je ova značajka izvrsna za sortiranje asocijativnih nizova php, tj. strukture gdje je ta veza logična i važna.

Elementi će biti poredani uzlaznim redoslijedom, jer... omogućuje vam sortiranje PHP asocijativnog niza po vrijednosti uz očuvanje ključeva.

Također možete proslijediti dva parametra. Naš testni niz će izgledati ovako:

Niz ( => 9 => 11 => 18)

Kao što vidite, razlika od sortiranja je samo u pohranjivanju ključeva vrijednosti po kojima je PHP niz sortiran. To se zove očuvanje odnosa ključ-vrijednost, što je nevjerojatno važno kada se sortiraju asocijativni nizovi u PHP-u.

arsort($niz, $zastavica);- još jedna php funkcija za sortiranje niza po vrijednosti. Antagonistički izbor.

Radi na istom principu kao i spomenuta funkcija, samo će php polje u ovom slučaju biti poredano silaznim redoslijedom. Također odlična opcija pri sortiranju PHP asocijativnih nizova.

Nakon poziva ove funkcije, naš primjer će izgledati ovako:

Niz ( => 18 => 11 => 9)

Napredne funkcije sortiranja php polja prema vrijednosti

Ovaj blok funkcija, za razliku od prethodnih, koji su dopuštali promjenu redoslijeda silaznim/uzlaznim redoslijedom, omogućit će vam dodavanje raznolikosti i raspored elemenata u različitim nizovima osim onih "tradicionalnih".

Ova značajka ih čini prikladnima za rješavanje raznih nestandardnih problema, ponekad vrlo zanimljivih :)

natsort($niz);— ova funkcija dodaje raznolikost u obitelj rješenja sličnih sortiranju, jer mehanizam njegova rada bitno se razlikuje od njih. natsort ima samo jedan ulazni parametar - ovo je niz koji se može sortirati, čije će vrijednosti biti raspoređene redoslijedom koji je poznat ljudima. Ovaj algoritam se zove "prirodni poredak", što na ruskom znači "prirodni poredak". Da bismo pojasnili značenje ove izjave, uzet ćemo drugi niz kao primjer:

Niz ( => student5 => student1 => student10)

Nadalje, funkcija natsort čuva odnos ključ-vrijednost. Stoga ćemo njen rad usporediti s asortom, koji joj je što sličniji. Nakon pozivanja potonjeg, naš niz će poprimiti sljedeći oblik:

Niz ( => student1 => student10 => student5)

Ako pozovete natsort, rezultirajući niz će biti ovakav:

Niz ( => student1 => student5 => student10)

Mislim da sada vidite razliku i bit će vam jasan princip rada natsort-a :-)

miješanje($niz); je prekrasna i vrlo korisna funkcija s kojom možete miješati PHP niz i postavljati njegove elemente nasumičnim redoslijedom.

Vrlo je prikladno kada trebate rasporediti proizvode internetske trgovine u kategoriju ili na drugu stranicu nasumičnim redoslijedom ili kada idete na web stranicu s posjetnicama, prikažite korisnicima različite blokove informacija svaki put u drugom redoslijedu.

U ovom slučaju odnos ključ-vrijednost nije sačuvan. To jest, polje koje smo koristili u prethodnom primjeru, za mene osobno, imalo je oblik:

Niz ( => student10 => student5 => student1)

Štoviše, nakon svakog poziva funkcije redoslijed elemenata bit će drugačiji.

Funkcije o kojima smo ranije govorili prilično su jednostavne, a mehanizam njihovog rada jasan. Niz se prosljeđuje kao parametar, čiji sadržaj treba sortirati prema vrijednostima njegovih elemenata, kao i zastavu koja može promijeniti ponašanje sortiranja (lako možete bez nje).

Vrlo je popularan među programerima jer... omogućuje vam rješavanje bilo kojeg problema vezanog uz sortiranje (pomoću raznih algoritama) pomoću njegove funkcije.

Jedan od tih zadataka je php po traženom polju.

Da vam jasno pokažemo kako rade sljedeće funkcije, uzmimo sljedeći niz kao primjer:

Niz ( => Niz ( => 32) => Niz ( => 11) => Niz ( => 27))

Kao što vidite, on je višedimenzionalan, jer... njegovi elementi su nizovi, čija je struktura identična: svi imaju polje s ključem "id". A sada je naš zadatak sortirati te elemente uzlaznim redoslijedom, tj. tako da su elementi u glavnom nizu raspoređeni u skladu s vrijednostima polja u podnizu.

Moram reći, prilično uobičajen zadatak. Sljedeće funkcije pomoći će nam da to riješimo:

usort($array, 'funkcija');— PHP funkcija za sortiranje višedimenzionalnog niza prema željenom polju.

Omogućuje sortiranje elemenata php niza bez očuvanja odnosa ključ-vrijednost u skladu s korisnički definiranom funkcijom, čiji se naziv prosljeđuje kao drugi parametar prilikom pozivanja usort.

Sama funkcija je posebno opisana. Što se tiče našeg primjera, za sortiranje elemenata višedimenzionalnog php polja prema polju ['id'] uzlaznim redoslijedom, korisnička funkcija će izgledati ovako:

Funkcija myCmp($a, $b) ( if ($a["id"] == $b["id"]) return 0; return $a["id"] > $b["id"] ? 1 : -1; )

Sve što sada trebamo za početak sortiranja je pozvati usort($array, 'myCmp'); na traženo mjesto u šifri. Prvi parametar specificira naziv varijable niza.

Kao rezultat toga dobivamo sljedeće:

Niz ( => Niz ( => 11) => Niz ( => 27) => Niz ( => 32))

uasort($niz, 'funkcija');— još jedna PHP funkcija za sortiranje višedimenzionalnog niza prema željenom polju.

Djeluje slično kao usort, ali čuva odnos ključ-vrijednost, što ovu funkciju čini prikladnom za sortiranje višedimenzionalnih asocijativnih nizova.

Prilagođena funkcija za naš primjer bit će ista. Rezultati njegovog izvršenja izgledat će ovako:

Niz ( => Niz ( => 11) => Niz ( => 27) => Niz ( => 32))

Kako biste promijenili redoslijed sortiranja elemenata i izvršili neke dodatne transformacije podataka, morat ćete urediti korisničku funkciju, kao što ste i sami mogli pogoditi :)

Na primjer, ako vaši nizovi, koji su elementi izvornog, sadrže polje ['name'] s vrijednošću niza, tada će prilagođena funkcija za sortiranje višedimenzionalnog php niza prema ovom polju uzlaznim redoslijedom izgledati ovako:

Funkcija myCmp($a, $b) ( if (strcasecmp($a["name"], $b["person"]["name"]) == 0) return 0; return strcasecmp($a["name" "], $b["ime"]) > 0 ? 1: -1; )

Sortiranje PHP nizova pomoću prilagođenih funkcija nije najlakša opcija, ali je vrlo fleksibilna u prilagodbi, a ako je savladate, postat će vam omiljeno rješenje.

array_multisort($niz1, $niz2, $zastavica);— za kraj sam spremio najstrašniju i najnejasnu PHP funkciju za sortiranje niza. Kao ulazni parametri, potrebna su dva niza i iste zastavice za sortiranje koje se mogu specificirati u funkcijama sličnim sortiranju. array_multisort radi na sljedeći način: prvi parametar je polje koje treba sortirati, drugo polje određuje redoslijed sortiranja prvog, nakon čega se drugo polje sortira na isti način kao i prvo. Umjesto niza koji predstavlja redoslijed sortiranja, možete koristiti konstante SORT_DESC za sortiranje niza u silaznom redoslijedu i SORT_ASC u uzlaznom redoslijedu. Svojoj toj zbrci možete dodati i zastavice za sortiranje koje mogu doći nakon svih nizova.

$knjige = niz(32, 11, 27); $sort_array = niz(1, 2, 3); array_multisort($knjige, $sort_array);

U ovom sam primjeru sortirao jednostavan jednodimenzionalni niz $books prema nizu $sort_array. Kao rezultat toga, prvi niz je dobio sljedeći oblik:

Niz ( => 11 => 27 => 32)

A drugi je postao ovakav:

Niz ( => 2 => 3 => 1)

Odnosno, sortirano je prema prvom. Ovo je peršin :)

Array_multisort je detaljnije opisan u sljedećem videu. Također ćete tamo pronaći dodatne primjere njegove upotrebe:

Pomoću ove funkcije također možete sortirati višedimenzionalne nizove:

$knjige = niz(niz(32), niz(11), niz(27)); $sort_array = niz(1, 2, 3); array_multisort($knjige, $sort_array);

Niz $books će izgledati ovako:

Niz ( => Niz ( => 11) => Niz ( => 27) => Niz ( => 32))

Istodobno, u ovoj funkciji možete odrediti nekoliko nizova, sortirajući po nekoliko polja. U tom će slučaju rezultati sortiranja prethodnih nizova utjecati na sljedeće, što će u konačnici dovesti do sortiranja posljednjeg niza prema različitim kriterijima.

Ovo je neka vrsta "grude snijega" u PHP-u.

Prilikom sortiranja PHP niza pomoću ove funkcije, odnos ključ-vrijednost se čuva za asocijativne nizove, ali ne i za numeričke nizove.

Programeri koji su testirali rad različitih funkcija primjećuju da pri sortiranju višedimenzionalnog niza php array_multisort pokazuje bolje rezultate od usort.

Ali array_multisort se neće moći nositi sa svim zadacima koje može učiniti usort. Na primjer, isti sortiranje višedimenzionalnog nizaphp po obaveznom polju. Dakle, u svakom pojedinačnom slučaju morate analizirati svoje šanse za uspjeh pri korištenju jednog ili drugog dizajna.

Osobno mogu reći da mi se pomalo ne sviđa array_multisort zbog njegove konfuzije i povećanog naprezanja mozga koje dolazi kada pokušavate zamisliti rezultirajući niz sortiran pomoću njega.

Stoga ga pokušavam ne koristiti osim ako je to apsolutno neophodno, dajući prednost usort i jednostavnijim funkcijama, na što i vas potičem :)

Funkcije o kojima smo ranije govorili omogućuju sortiranje nizova u PHP-u prema vrijednosti elemenata. Razgovarajmo o tome kako možete izvesti sličnu radnju na ključevima elementa.

PHP funkcionira za sortiranje niza po ključu

Prije nego što prijeđemo na pregled funkcija u ovoj skupini, želio bih reći da sve imaju jednu zajedničku stvar - sve čuvaju odnos ključ-vrijednost. I, strogo uzevši, nije moglo biti drugačije, jer... onda od njih nebi bilo smisla :)

Ovo je posebnost. Pogledajmo detaljnije svaku funkciju.

ksort($niz, $zastavica);— funkcija je analogna sortiranju, samo što elementi u nizu neće biti poredani po vrijednostima, već po ključevima.

Ovaj dizajn ima dva ulazna parametra: PHP niz koji se sortira i jednu od zastavica za sortiranje, čiji potpuni popis možete pronaći u opisu funkcije sortiranja (njegovo korištenje nije obavezno). Ova php funkcija omogućuje sortiranje niza uzlaznim redoslijedom.

Da pokažemo kako to radi, vratimo se na primjer opisan na samom početku članka:

Niz ( => 11 => 18 => 9)

Ako ga sortirate pomoću ksort, rezultat će izgledati ovako:

Niz ( => 18 => 9 => 11)

Mislim da je sve jednostavno i jasno.

krsort($niz, $zastavica);- još jedna PHP funkcija za sortiranje polja po ključu, vrlo slična prethodnoj.

Jedina razlika je u tome što razvrstava php polje silaznim redoslijedom. To jest, on je antagonist ksortu, kao što je rsort sortiranju.

Također ima dva ulazna parametra: polje koje treba sortirati i jedan od ključeva. Nakon pokretanja, naš će primjer izgledati ovako:

Niz ( => 11 => 9 => 18)

Mislim da su komentari nepotrebni :)

ukrsort($niz, 'funkcija');- analog prethodno spomenute PHP funkcije za sortiranje niza po ključu - usort.

Radi na istom principu: čuva odnos ključ-vrijednost i PHP niz se sortira u skladu s korisnički definiranom funkcijom, čiji se naziv prosljeđuje kao drugi parametar. Prvi parametar je nepromijenjen - ovo je polje koje treba sortirati.

Razlika od usorta je u tome što se sortiranje odvija po ključevima elementa.

Da biste ilustrirali kako ova funkcija radi, upotrijebite sljedeći primjer:

Niz ( => 40 => 0 => 10)

Na primjer, moramo sortirati php polje prema ključu uzlaznim redoslijedom. U ovom bi slučaju korisnička funkcija izgledala ovako:

Funkcija myCmp($a, $b) (if ($a == $b) vrati 0; vrati $a< $b ? 1: -1; }

Kao rezultat toga, naš niz će imati sljedeći oblik:

Niz (=> 0 => 10 => 40)

Jasna prednost korištenja ove funkcije je ta što se može koristiti za sortiranje PHP niza prema nekim neobičnim kriterijima ili algoritmima.

Dopustite mi da vas podsjetim da ga trebate koristiti samo kada ključevi elemenata niza nose neku vrstu semantičkog značenja. Inače je bolje koristiti usort ili druge jednostavnije funkcije.

Naš članak je došao kraju (lajkajte ga ako ste do sada pročitali) :)

U njemu sam pokušao što jednostavnije, au isto vrijeme jasno i potpuno opisati sve moguće načine sortiranja različitih vrsta nizova u PHP-u, potkrijepivši svoje riječi primjerima.

Priznajem da je publikacija bila prilično obimna i teško čitljiva. Ali svaki put kad zatreba sortiranje php polja, uvijek možete pogledati ovaj članak za opis funkcije koja vam je potrebna i vidjeti primjere njezine upotrebe.

Nadam se da su vam informacije bile korisne :)

Pretplatite se na ažuriranja projekta i

Najbolji članci na temu