Home   FORUM   Toplista   HTML   CSS   JavaScript   PHP   DIZAJN   SEO   Mapa
KONTAKT
izuzetan[at]gmail.com






TOP LISTA SAJTOVA

Uredjivanje dvodimenzionalnih numerički indeksiranih nizova

Uredjivanje nizova sa dva i više indeksa u redosled koji možda nije abecedni ili numerički je složenije. U takvom slučaju morate napraviti svoje funkcije za poredjenje višedimenzionih nizova.

Napravimo sada prvo tabelu a zatim i niz čiji elementi čuvaju na primer imena nekih kandidata, boju njihove kose i težine. Znači napravimo niz čiji elementi sadrže vrednosti koje su različite kako po svom karakteru tako i po svom značenju. U našem slučaju različiti su po karakteru u tome što postoje i numeričke i string vrednosti a po značenju jer imaju podatke o boji kose kandidata, imena kandidata i njihovih težina.


Redovi kolone 0 1 2
0 Pera plava 100
1 Giga crna 60
2 Boban smedja 80

Sada ovu tabelu pretočimo u dvodimenzionalni numerički indeksirani niz:

$kandidati=array(
array("Pera","plava",100),
array("Giga","crna",60),
array("Boban","smedja",80)
);

Ovim kodom smo napravili sledeći niz koga ću namerno napisati u tri kolone zbog objašnjenja:

$kandidati[0][0]="Pera";   $kandidati[0][1]="plava";  $kandidati[0][2]=100;
$kandidati[1][0]="Giga";   $kandidati[1][1]="crna";   $kandidati[1][2]=60;
$kandidati[2][0]="Boban";  $kandidati[2][1]="smedja"  $kandidati[2][2]=80;

Normalno niz može sadržati i više osobina osim imena, boje kosa I težina, potrebno je samo povećati broj kolona. Takodje ne moraju biti samo 3 kandidata, može ih biti i mnogo više, samo povećamo broj redova.

Posmatrajmo sad indekse niza. Primećujemo da drugi indeks kad je nula onda vrednosti niza su imena kandidata. Ako je drugi indeks broj jedan vrednosti niza su boja kose a kad je drugi indeks broj dva niz sadrži težine. Znači bez obzira što niz sadrži raznovrsne podatke ipak smo ih uredili i to po drugom indeksu niza. E sad možemo urediti niz po bilo kom od ta tri indexa u zavisnosti od toga po kojim osobinama želimo urediti niz. Ako želimo na primer po abecednom redosledu boja kose izabraćemo kao drugi index broj 1 i tad bi naša funkcija uporedjivanja izgledala ovako:

function uporedjenja($x,$y){
  if($x[1]==$y[1]) return 0;
  else if($x[1]<$y[1]) return -1;
  else return 1;
}
usort ($kandidati,"uporedjenja");

Funkcija usort se koristi kada želimo sortirati neki niz po neobičnom redosledu. Taj neobičan redosled definišemo našom funkcijom function uporedjenja. Pisanje sopstvenih funkcije kasnije će biti detaljno objašnjeno ali sad da objasnimo u kratkim crtama: Funkcija se definiše pomoću rezervne reči function, pa zatim smisleno ime, u našem slučaju „uporedjenja“. Zatim u zagradi upisujemo parametre sa kojima funkcija barata. Broj parametara nije ograničen. U našem slučaju imamo dva parametra $x, i $y. Svrha naše funkcije je da utvrdi redosled ta dva parametra. U našem slučaju prametri $x[1] i $y[1] biće dva niza unutar glavnog niza od koji svaki pretstavlja po jednu boju kose jer smo za indeks uzeli broj 1. Da smo uzeli broj 2 onda bi smo naš glavni niz uredjivali po težini kandidata, a da smo uzeli broj 0 onda po abecednom redosledu kandidata. Funkcija vraća rezultat za šta se koristi rezervna reč return. Na primer funkcija vraća vrednost 1 kad je return 1. Funkcija za poredjenje treba da uporedi x i y i da vrati 0 ako je x jednako y, -1 ako je x manje od y i 1 ako je x veće od y. Usort uredjuje po rastućem redosledu u ovom slučaju ali ako promenimo tako da funkcija vraća -1 ako je y manje od x i 1 ako je y veće od x.

Copyright © 2010 BUbaj. Powered By bubaj.com
PHP    PHP sintaksa    Fajl    Niz    String    Funkcija    Objektno programiranje    MySQL    Unos fajla    Datum    Forme    Sesija    Registracija