You are on page 1of 82

PROGRAMIRANJE WEB APLIKACIJA

PREDAVANJE 3:

✓ Uvod u PHP
✓ Promenljive, operatori, petlje
✓ Funkcije, opseg
✓ Nizovi
1
UVOD U PHP

2
PHP DATOTEKA
 Programe pisane u programskom jeziku PHP nije potrebno prevoditi u
izvršni oblik već se oni izvode prilikom pokretanja u interpreteru.
 PHP program se piše kao deo HTML stranice unutar HTML oznake
<?PHP Ovde se piše PHP kod ?>
 Podrazumevana ekstenzija PHP datoteke je .php
 Ako je na web serveru instaliran i ispravno podešen PHP interpreter, a
datoteka završava sa .php tada će se taj deo programa automatski
izvršiti.
PHP DATOTEKA
 Primer programa pisanog u PHP-u za ispis teksta.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PHP program</title>
</head>
<body>
<?php echo "Moj prvi PHP program"; ?>
</body>
</html>
REZULTAT POKRETANJA PHP DATOTEKE

 PHP interpreter se uključuje ukoliko stranica ima ekstenziju .php i ukoliko u okviru
te stranice postoji PHP tag.
 Rezultati izvršenja PHP koda su vraćeni u browser, a ne u sam kod.
OSNOVNE KARAKTERISTIKE
 PHP kôd može da bude postavljen bilo <!DOCTYPE html>
gde u dokumentu. <?php $stranica = "Nova stranica";?>
<html lang="en">
 PHP kôd staruje sa <?php a završava sa ?>
<head>
 PHP kôd je niz naredbi. <meta charset="UTF-8">
<title><?php echo $stranica;?></title>
 Svaka naredba se mora završiti oznakom </head>
tačka-zarez (;). <body>
<?php echo $stranica; ?>
 Kada se izvrši PHP kôd tada se on u
</body>
prikazu zamenjuje svojim rezultatom. </html>
 PHP kôd može biti napisan i na više mesta
na stranici.
OSNOVE PROGRAMSKOG JEZIKA PHP

7
UPOTREBA KOMENTARA
 Postoje tri oznake komentara: //, #, /*..*/
 Linijski komentari : // ili #
<?php
// Neki linijski komentar
$naziv = "Novi naziv"; // Linijski komentar – deklaracija varijable

# Drugi linijski komentar


/ / Ovo nije linijski komentar – greška
?>
 Blokovski komentar /*...*/

<?php
/* Ovo je primer
komentara u nekoliko
redova */
$naziv = "Novi naziv"; /*On se može koristiti i u jednoj liniji */
?>
ISPISIVANJE PODATAKA
 echo
<?php
 nema povratnu vrednost,
echo "zdravo";
 može da primi više parametara, echo "zdravo", "pozdrav";
 brži echo ("zdravo");
print "zdravo";
 print print ("zdravo");
 vraća vrednost 1 koja može da se ?>
iskoristi u izrazima,
 prima samo jedan argumenat,
 sporiji
ISPISIVANJE PODATAKA
<?php
// Primer ispisivanja teksta upotrebom echo i print
echo "Primer sa echo <br>";
print "Primer sa print <br>";
// Primer ispisivanja brojeva
echo 5.23;
echo "<br>";
print 123.321;
echo "<br>";
// Primer ispisivanja vrednosti promenljivih
$text = "Moj novi tekst";
echo $text;
echo "<br>";
print $text;
echo "<br>";
// Ispis nekoliko odvojenih vrednosti
echo "zdravo", "pozdrav";
echo "<br>";
// Obe naredbe mogu koristiti i
zagrade čime izgledaju kao funkcije
echo ("Echo sa zagradama");
echo "<br>";
print ("Print sa zagradama");
?>
ISPISIVANJE PODATAKA

Izgled HTML koda. Svi podaci su se ispisali.


PHP programski deo koda zamenjen je podacima koji su se ispisali.
ISPISIVANJE NIZOVA ZNAKOVA

 U programskom jeziku PHP postoje dva načina definisanja niza znakova koji će se
ispisati.
 označavanje niza znakova pod oznakom navodnika " "
 označavanje niza znakova pod oznakom apostrofa ' '
 Ako podatak tipa string počinje dvostrukim znacima navoda, mora se završiti sa tim
znacima navoda
 Uokviru dvostrukih znakova navoda možemo ubacivati promenljive, a u okviru
jednostrukih ne
ISPISIVANJE NIZOVA ZNAKOVA
 Primer 1
<?php
$txt1="Predmet 'PVA' je super!!!!";
$txt2= 'Predmet "PVA" je super!!!!';
echo $txt1;//Izlaz je: Predmet 'PVA' je super!!!!
echo $txt2;//Izlaz je: Predmet "PVA" je super!!!!
?>

 Primer 2
<?php
$txt1="Predmet 'PVA' je super!!!!";
$txt2= 'Predmet "PVA" je super!!!!’;

//Izlaz je: Vrednost prvog stringa je Predmet'PVA’ je super!!!!


echo "Vrednost prvog stringa je $txt1<br>";

//Izlaz je: Vrednost drugog stringa je $txt2


echo 'Vrednost drugog stringa je $txt2';?>
VRSTE PODATAKA

14
PROMENLJIVE

 Promenljive su „skladišta“ za čuvanje informacija.


 Naziv promenljive mora početi oznakom $, a nakon toga mora biti slovo ili donja crta.
 Sve promenljive u programskom jeziku PHP razlikuju velika i mala slova.
 Primeri različitih promenljivih: $tekst, $TEKST, $Tekst, $tekST
<?php
$x=5; <?php
$y=3.5; $X=5;
$z=$x+$y; echo $X;
$txt = "Zdravo svete!"; echo "<br>";
echo $z; echo $x;
echo $txt; ?>
?>
TIPOVI PROMENLJIVIH

 PHP je slabo tipiziran jezik <?php


 nema komandu za deklarisanje promenljivih. $x=5;
echo $x;
 u programskom jeziku PHP nije potrebno
deklarisati promenljive echo "<br>";
$x="Tekst";
 Boolean echo $x;
 0 – netačno $a = 1234; //pozitivan
$a = -123; // negativan
 bilo koji negativni (-1) ili pozitivan broj - tačno
$b= true; //boolean
 U PHP 7 dodata deklaracija tipova promenljivih. $a = 1.234; //float
?>
PROMENLJIVE TIPA STRING

 Sadrže karaktere i tekst u njima se nalazi između navodnika (jednostrukih ili dvostrukih)
 Operator nadovezivanje (konkatenacije) je simbol tačka „.“

<?php
$txt1="Dobar dan!";
$txt2= "Divan dan danas.";
echo $txt1;//Izlaz je: Dobar dan
echo $txt2;//Izlaz je: Divan dan danas
echo $txt1." ".$txt2;//Izlaz je: Dobar dan! Divan dan danas.
?>
STRLEN()
 strlen() vraća broj karaktera u stringu (dužinu stringa).
 Ulazni parametar funkcije je string čiju dužinu tražimo.
 Povratna vrednost je podatak tipa integer

<?php
$ime="Sinisa";
echo strlen($ime);//Izlaz je: 6
?>

<?php
$ime="Siniša";
echo strlen($ime);//Izlaz je: ?
?>
STRLEN()
 strlen(„Siniša“) neće vratiti 6, nego 7.
 Razlog za to je karakter „š“ koji je utf-8.
 Ima dva načina za rešenje problema sa enkodingom:
 mb_strlen() – multibyte strlen
 utf8_decode()

<?php
echo mb_strlen(„Siniša");//Izlaz je: 6
echo strlen(utf8_decode(„Siniša"));//Izlaz je: 6
?>
STRPOS()
 strpos() traži određeni karakter ili string unutar stringa.
 Ima dva ulazna parametra.
 Prvi parametar je string u kome tražimo, a drugi je string/karakter koji tražimo.
 Ako je string nađen, povratna vrednost je pozicija nađenog stringa (pozicije počinju od 0)
 Ako nije nađen string, funkcija vraća se boolean FALSE

<?php
echo strpos("Dobar dan", "dan");//Izlaz je: 6
?>
TRIM()

 trim() briše beline s početka i kraja znakovnog


podatka.
 Briše znakove: <?php
$str = " Dobar dan! ";
 za povratak na početak reda(\r) echo " Bez trima: " . $str;
 za prelazak u novi red (\n) echo "<br>";
 horizontalne i vertikalne tabulatore (\t, \x0B) echo " Sa trimom: " . trim($str);
?>
 znakove za kraj znakovne vrednosti (\0)
 razmake (" ")
 Mogu se proslediti parametar koji sadrži eksplicitno
zadat spisak znakova koje treba ukloniti.
NL2BR(), PRINTF(), SPRINTF()

 nl2br() prihvata znakovnu vrednost kao ulazni parametar i sve znake za prelazak u
novi red zamenjuje HTML oznakom( <br> ili </br>)
 printf() prosleđuje formatiranu znakovnu vrednost browseru
 sprintf() vraća formatiranu znakovnu vrednost
PRETVARANJE MALIH I VELIKIH SLOVA
$ime=„ Programiranje na Vebu“

Upotreba Opis Vrednost


$ime

strtoupper($ime) sva slova menja u velika PROGRAMIRANJE NA VEBU

strtolower($ime) sva slova menja u mala programiranje na vebu

ucfirst($ime) menja u veliko slovo prvi znak ulaznog Programiranje na Vebu


argumenta, ako je alfabetski
ucwords($ime) menja u veliko slovo prvi znak svake reči koja Programiranje Na Vebu
počinje alfabetskim znakom
FUNKCIJE ZA RAD SA PROMENLJIVAMA
 gettype(promenljiva) - utvrđuje tip promenljive
 settype(promenljiva,tip) - menja tip promenljive
 isset(promenljiva) - true ako je promenljiva definisana
 unset(promenljiva) - poništava definiciju promenljive
 empty(var) - ispituje da li postoji promenljiva i da li ima vrednost koja nije nula
 is_array
 is_double, is_float, is_real
 is_long, is_int, is_integer
 is_string
 is_object
 is_null()
 is_scalar()
 is_numeric()
KONSTANTE

 PHP može da koristi konstante.


<?php
 Konstante se ne pišu s početnom oznakom $, već se define("PI", 3.14);
piše samo naziv konstante. // Ispisuje 3.14
echo PI;
 Neke konstante su u samom programskom jeziku PHP
?>
definisane.
 M_PI, M_PI_2 (Pi/2), M_PI_4 (Pi/4),....
IZRAZI I OPERATORI

26
PHP OPERATORI

 Operatori se koriste za obavljanje operacija nad promenljivima i vrednostima.


 PHP operatore deli na sledeće grupe:
 Aritmetički operatori
 Operatori za dodelu
 Operatori za poređenje
 Operatori povećanja / smanjenja
 Logični operatori
 String operatori
 Operatori niza
 Operatori uslovne dodele
ARITMETIČKI OPERATORI

Operator Ime Opis Primer Rezultat


x+y Sabiranje Zbir 2+2 4
x-y Oduzimanje Razlika 5-2 3
x*y Množenje Proizvod 5*2 10
x/y Deljenje Celobrojno deljenje 15/5 3
x%y Moduo Ostatak pri deljenju 5%2 1
-x Negacija Negacija -2
OPERATORI DODELE
 Operatori za dodelu koriste se za upis vrednosti u promenjivu.
 Osnovni operater dodele u PHP-u je "=".
 To znači da se levi operand postavlja na vrednost izraza koji je s desne strane.

Dodela Isto što i.... Opis


x=y x=y Dodela vrednosti levom operandu

x+=y x=x+y Sabiranje


x-=y x=x-y Oduzimanje
x*=y x=x*y Množenje
x/=y x=x/y Deljenje
x%=y x=x%y Moduo
a.=b a=a.b Nadovezivanje
DODELA VREDNOSTI
 Osnovni operator dodele „=“
 Čita se kao „dobija vrednost“ (npr. $x=3;//Promenljiva x dobija vrednost 3)
 Zagrade se upotrebljavaju zbog prioriteta izvršavanja operacija
 Za sve operatore važi sledeće pravilo:
 vrednost celog izraza dodele je vrednost koja je dodeljena operandu na levoj strani
 $x=5+($a=6); //Promeljiva x dobija vrednost 11
OPERATORI INKREMENTIRANJA/DEKREMENTIRANJA

Operator Ime Opis

++x Preinkrement Povećanje x za 1 pa tek onda vraćanje vrednosti x

x++ Postinkrement Vraćanje vrednosti x pa tek onda povećanje x za 1

---x Predekrement Smanjenje x za 1 pa tek onda vraćanje vrednosti x

x--- Postdekrement Vraćanje vrednosti x pa tek onda smanjenje x za 1


OPERATORI POREĐENJA
Operator Ime Opis Primer
x==y jednakost True ako su jednaki 5==8 vraća false
x===y identičnost True ako su jednaki i ako su istog tipa 5===„5“ vraća false
x!=y nejednakost True ako su različiti 5!=8 vraća true
x<>y nejednakost True ako su različiti 5<>8 vraća true
x!==y neidentičnost True ako su različiti ili ako nisu istog tipa 5!==„5“ vraća true
x>y veće od True ako je x veće od y 5>8 vraća false
x<y manje od True ako je x manje od y 5<8 vraća true
x>=y Veće ili jednako od True ako je x veće ili jednako od y 5>=8 vraća false
x<=y Manje ili jednako od True ako je x manje ili jednako od y 5<=8 vraća true
LOGIČKI OPERATORI

Operator Ime Opis


x and y And True ako su i x i y tačni
x or y Or True ako je barem jedan tačan
x xor y Xor True ako je samo jedan tačan
x && y And True ako su i x i y tačni
x || y Or True ako je barem jedan tačan
!x Not True ako je x netačan
OPERATORI ZA NIZOVE

Operator Ime Primer Rezultat


+ unija $x + $y Unija $x i $y

== jednakost $x == $y Vraća true ako $x i $y imaju iste parove kluč/vrednost


Vraća true ako $x i $y imaju iste parove ključ/vrednost u istom redosledu i
=== identičnost $x === $y
istog tipa
!= nejednakost $x != $y Vraća true ako $x nije jednak $y

<> nejednakost $x <> $y Vraća true ako $x nije jednak $y

!== neidentičnost $x !== $y Vraća true ako $x nije identičan $y


DODATNI OPERATORI
 Ternarni operator

Operatori za uslovno dodeljevanje


koriste se za postavljanje vrednosti u
zavisnosti od uslova:

uslov ? uslov_true : uslov_false


($ocena > 5 ? „polozio“ : „pao“);

 Operator zanemarivanja greške

$a = @(27/0)
Bez operatora @, izvršno okruženje bi generisalo upozorenje „deljenje nulom“
PRIMERI UPOTREBE OPERATORA
<?php
// Uvećavanje vrednosti varijable $rezultat za 1 <?php
$rezultat=5; // Primeri spajanja niza znakova
echo $rezultat; $tekst = "Novi program";
echo "<br>"; echo $tekst;
$rezultat=$rezultat + 1; echo "<br>";
echo $rezultat; $tekst = "Novi" . "program";
echo "<br>"; echo $tekst;
$rezultat+= 1; echo "<br>";
echo $rezultat; $tekst = "Treći";
echo "<br>"; $tekst .= "primer";
$rezultat++; echo $tekst;
echo $rezultat; echo "<br>";
echo "<br>"; $tekst = "Treći";
++$rezultat; $tekst = $tekst ." ". "primer";
echo $rezultat; echo $tekst;
echo "<br>"; ?>
?>
OSNOVNE NAREDBE PROGRAMSKOG JEZIKA PHP

37
USLOVNI ISKAZI - IF

 Struktura
if(uslov){blok_naredbi}
 Ako je uslov ispunjen izvršiće se blok_naredbi
<?php
$x=5;
if($x>3)
{
echo "Uslov je ispunjen";
}
?>

 Ukoliko se blok_naredbi sastoji od samo jedne instrukcije, vitičaste zagrade nisu


potrebne
IF....ELSE STRUKTURA
 Struktura
<?php
if(uslov)
$x=5;
{blok_naredbi1} if($x>3)
{
else echo "Uslov je ispunjen";
{blok_naredbi2} }
else
{
echo "Uslov nije ispunjen";
}
?>

Ako je uslov ispunjen izvršiće se blok_naredbi1 , a ako nije izvršiće se blok_naredbi2


IF....ELSEIF...ELSE STRUKTURA
 Struktura
if (uslov1) {
blok_naredbi1 će se izvršiti ako je uslov1 ispunjen; <?php
} $t = date("H");
if ($t < "10") {
elseif (uslov2) {
echo „Dobro jutro!";
blok_naredbi2 će se izvršiti ako uslov1 nije ispunjen i uslov2 je } elseif ($t < "20") {
ispunjen; echo „Dobar dan!";
} } else {
else { echo „Laku noć!";
}
blok_naredbi3 će se izvršiti ako oba uslova (uslov1 i uslov2) nisu ?>
ispunjeni;
}
SWITCH
switch(promenljiva) <?php
{ $omiljenaBoja = "purple";

case vrednost1: switch ($omiljenaBoja) {


blok_naredbi1; case "red":
echo "Omiljena boja je crvena!";
break;
break;
case vrednost2: case "blue":
blok_naredbi2; echo "Omiljena boja je plava!";
break;
break; case "purple" :
.... echo "Omiljena boja je ljubičasta!";
break;
default:
default:
blok_naredbin; echo "Nemate omiljenu boju!";
} }
?>
PETLJE

 WHILE – prolazak kroz blok koda dok je određeni uslov zadovoljen


 DO...WHILE – prolazak barem jednom kroz blok, a onda ponavljanje dok je uslov
zadovoljen
 FOR – prolazak kroz blok zadati broj puta
 FOREACH – prolazak kroz blok za svaki elemenat niza
WHILE PETLJA
 Poznata i kao petlja sa izlazom na vrhu
 Nema svoj brojač prolazaka kroz petlju, mora se dodeliti programski i povećavati za
svaki prolazak

<?php
$i=1;
while($i<=5)
{
echo "Broj je " . $i . "<br>";
$i++;
}
?>
DO...WHILE PETLJA
 Poznata i kao petlja sa izlazom na dnu
 Nema svoj brojač prolazaka kroz petlju, mora se dodeliti programski i povećavati za
svaki prolazak
<?php
$i=1;
do
{
$i++;
echo "Broj je " . $i . "<br>";
}
while ($i<=5);
?>
FOR PETLJA
 Petlja sa poznatim brojem prolazaka
 Ima svoj brojač prolazaka kroz petlju

<?php
for ($i=1; $i<=5; $i++)
{
echo „Broj je " . $i . "<br>";
}
?>
FOREACH PETLJA

 Petlja koja prolazi kroz sve elemente niza, najčešće se koristi za asocijativne nizove
gde ne možemo koristiti FOR petlju

<?php
$x=array("one", "two", "three");
foreach ($x as $value)
{
echo $value . "<br>";
}
?>
FUNKCIJE

47
KORISNIČKE FUNKCIJE

 Funkcija je samostalan modul koji propisuje način pozivanja funkcije, obavlja


zadatak i eventualno vraća rezultat.
 Prilikom pisanja funkcija nije potrebno definisati vrstu povratne varijable za
razliku od programskog jezika C.
 Pozivanje nedefinisanih funkcija => greška!
 Nema razlike između malih i velikih slova kod funkcija u PHP (Funk, FUNK,
funk... je ista funkcija)
OSNOVNA STRUKTURA FUNKCIJE
 Deklaracija počinje sa function, iza koje slede ime funkcije i parametri, a zatim i kod koji se
izvršava kada je funkcija pozvana
 Imena funkcija:
 Nova funkcija ne sme da ima isto ime kao neka postojeća
 Ime funkcije može da bude sastavljeno od slova, cifara i donje crte _
 Ime funkcije ne može počinjati cifrom
 PHP ne dozvoljava preklapanje ugrađenih funkcija!!
 Može da postoji jedan ili više parametara, ali ne moraju svi biti obavezni
 Funkcija se NEĆE izvršiti ukoliko eksplicitno ne pozovemo njeno ime
 Funkcije mogu biti definisane u bilo kom delu programa
PRIMER FUNKCIJE
<?php <?php
function imePredmeta() function naslov($tekst){
{ // Telo funkcije
echo "Programiranje veb aplikacija"; echo "<h1>" . $tekst . "</h1>";
} }
echo "Ime predmeta je:";
naslov("Ispisuje se parametar
imePredmeta();
?> funkcije");
?>

 Prilikom pozivanja funkcije potrebno je navesti i parametar, ukoliko ga funkcija ima.


 Nije moguće dve funkcije nazvati istim nazivom i razlikovati ih upotrebom malih i
velikih slova u nazivu funkciju.
PRENOS PARAMETARA PO VREDNOSTI

 Kada funkciji prosledite vrednost parametra, unutar funkcije se pravi nova


promenljiva koja sadrži prosleđenu vrednost - kopija originala
 Može slobodno da se menja, dok izvorna promenljiva ostaje nepromenjena

<?php
function dodatak($krajImena)
{
echo "Programiranje ".$krajImena;
}
dodatak("veb aplikacija");//Izlaz je: Programiranje veb aplikacija
dodatak("aplikacija baza podataka");//Izlaz je: Programiranje aplikacija baza podataka
?>
NEOBAVEZNI PARAMETRI

 Neki parametri koje prosleđujemo funkciji ne moraju biti obavezni


 To znači da za te parametre postoji predefinisana vrednost u okviru same funkcije
<?php
function ime($ime, $prezime="Nije definisano")
{
echo "$ime $prezime";
}
ime("Lazar", "Lazarević");//Izlaz je: Lazar Lazarević
ime("Lazar");//Izlaz je: Lazar Nije definisano
?>

 Ukoliko postoje neobavezni parametri, mora se voditi računa o redosledu


parametara
POVRATNA VREDNOST FUNKCIJE - RETURN

 Izvršenje funkcije se prekida naredbom return()


 Kao parametar naredbe return() može biti vrednost koju ćemo vratiti glavnom
programu
<?php
function add($x,$y)
{
$total=$x+$y;
return $total;
}
$zbir=add(1,16);
echo "Zbir je: " . $zbir;
?>
OPSEG PROMENLJIVIH
 Promenljive imaju vidljivost – opseg definisan kao i u programskom jeziku C.
 Podrazumevana vrednost promenljive je unutar bloka u kojem je definisana.
 Opseg vidljivosti je deo skripta u kome promenljiva može biti korišćena
 Lokalni
 Globalni
 Statički
 Parametarski
LOKALNI OPSEG
 Promenljive definisane u okviru jedne funkcije su vidljive samo u toj funkciji
 Odmah nakon što funkcija završi s izvođenjem njena vrednost se briše.
<?php
function test1()
{
$x=5;
echo "<p>Vrednost promenljive x unutar funkcije je:$x</p>";
}
test1();//Vrednost promenljive x unutar funkcije je:5

//Notice: Undefined variable: x in C:\xampp\htdocs\P3\proba1.php on line 17


echo "<p>Vrednost promenljive x izvan funkcije je:$x</p>";

function test2()
{
$x="Zdravo";
echo "<p>Ime varijable x u funkciji test2 isto je kao i u funkciji test1,ali vrednost je:$x</p>";
}
test2();
?>
STATIČKI OPSEG
 Definišu se pomoću naredbe static. <?php
function funkcija1()
 Ako je potrebno poznavati vrednost {
promenljive i nakon što se funkcija ponovo static $x=5;
pozove potrebno je definisati statičku echo $x;
promenljivu. $x++;
}
 Statičke promenljive definišu i izračunavaju funkcija1();//Izlaz je 5
svoju vrednost unutar samo jedne funkcije, ali funkcija1();//Izlaz je 6
funkcija1();//Izlaz je 7
prilikom svakog idućeg poziva funkcije sadrže ?>
vrednost iz prethodnog poziva te iste funkcije.
GLOBALNI OPSEG
 Naredba global <?php
$x=5;//globalni opseg
 Promenljiva definisana unutar glavnog $y=6;//globalni opseg
programa je globalna varijabla. function funkcija1()
{
 Pristup globalnoj varijabli unutar funkcije global $x, $y;
$y=$x+$y;
 samo ako se definiše u funkciji upotrebom }
naredbe global funkcija1();
echo $y;//Izlaz je 11
$GLOBALS ?>
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
GLOBALNI OPSEG
 PHP takođe može da čuva globalne promenljive u nizu koji se zove $GLOBALS [indeks].
 Indeks sadrži ime promenljive.
 Ovaj niz je dostupan iz funkcija i može se direktno koristiti za ažuriranje globalnih varijabli.
<?php
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}

myTest();
echo $y; // izlaz je 15
?>
PARAMETARSKI OPSEG

 Parametarske promenljive su promenljive koje se prosleđuju kao parametar funkciji


 Često ih zovemo argumentima funkcije.

<?php
function funkcija1($x)
{
echo $x;
}
funkcija1(5);//Izlaz je 5
funkcija1(25);//Izlaz je 25
funkcija1(„Zdravo“);//Izlaz je Zdravo
?>
NIZOVI

60
NIZOVI

 Niz (array) je promenljiva određenog imena koja sadrži skup vrednosti u


nekom redosledu
 Vrednosti smeštene u nizu nazivaju se elementi
 Redni brojevi elemenata se nazivaju indeksi ili ključevi
 tekst, broj, drugi niz
 Niz je efikasniji način za čuvanje podataka od pojedinačnih dodela.
TIPOVI NIZOVA

 Indeksirani (numerički) nizovi


 Nizovi sa numeričkim indeksima

 Asocijativni nizovi
 Nizovi sa imenovanim ključevima kao indeksima

 Višedimenzionalni nizovi
 Nizovi sastavljeni od više nizova
INDEKSIRANI NIZOVI
 Niz se incijalizuje - kreira pomoću naredbe array()
$lekovi=array(‘Andol’, ‘Brufen’, ‘VitaminC’);
 Kopiranje jednog niza u drugi pomoću operatora =
 Funkcija range() automatski pravi niz rastućih brojeva
$brojevi = range(1,10);
$neparni = range(1,10,2); //2 je korak za koji se povećava
$slova = range (‘a’, ’z’);
PRISTUPANJE SADRŽAJU NIZA

 Sadržaju niza se pristupa pomoću imena promenljive i indeksa (ključa), koji se navodi
u uglastim zagradama
$x=$cars[0];
 Sadržaj elementa niza menja se pomoću operatora =
$cars[0]=‘Ferari’;
 Može se dodati i novi element
$cars[3]=‘Pežo’;
PRISTUPANJE SADRŽAJU NIZA
<?php
$gradovi=array("Beograd", "Niš", "Novi Sad");
$postBrojevi=array("11000", "18000", "21000");
echo $postBrojevi[0]. " ".$gradovi[0];
?>

 Za dohvaćanje vrednosti podatka u nizu potrebno je u uglastoj zagradi nakon


naziva promenljive niz napisati indeks podatka koji se želi dohvatiti.
 Prvi podatak ima redni broj nula, drugi ima redni broj jedan i tako dalje.
 Ispisivanje informacije o trećem podatku:
<?php
echo $postBrojevi[2]. " ".$gradovi[2];
?>
PRISTUPANJE SADRŽAJU NIZA
 Niza se može incijalizovati i direktnim upisom na odgovarajuću lokaciju:

<?php
$boja[0]="zelena";
$boja[3]="plava";
echo "$boja[0] $boja[3]<br>";
$boja[2]="crvena";
echo "$boja[0] $boja[2] $boja[3]";
?>
ISPISIVANJE STRUKTURE NIZA
 var_dump() - za prikaz podataka koji imaju složenu strukturu (niz, objekat ....)
 vraća tip, vrednost podataka i broj podataka koji su sačuvani

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

 print_r() - ispisuje samo vrednosti elemenata niza.


<?php
$a = array(1, 2, array("a", "b", "c"));
print_r($a);
?>
PRISTUPANJE ELEMENTIMA
INDEKSIRANOG NIZA U PETLJI
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
?>
ASOCIJATIVNI NIZOVI
 Podatak ne smešta na neko mesto koje je označeno brojem već je označeno nekim nazivom.
 Asocijativni nizovi su određeni parovima ključ=>vrednost
 naziv ključa => vrednost elementa za taj ključ

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo $age['Peter'];//Izlaz je: 35
echo $age['Ben'];//Izlaz je: 37
echo $age['Joe'];//Izlaz je: 43
echo "Peter ima " . $age['Peter'] . " godina.";//Izlaz je: Peter ima 35 godina
?>
ASOCIJATIVNI NIZOVI

<?php
$podaci=array("Ime"=>"Ana","Prezime"=>"Petrović","Broj indeksa"=>"RT-1/19");

echo "Ime, prezime i broj indeksa studenta:"." ".$podaci['Ime']."


".$podaci['Prezime']." ".$podaci['Broj indeksa’];
?>
ASOCIJATIVNI NIZOVI

 Mogu se definisati i direktno:


<?php
$gradovi['Beograd']=11000;
$gradovi['Novi Sad']=21000;
echo "Poštanski broj Novog Sada je". " ".$gradovi['Novi Sad'];
echo "<br>";
?>

 Ključ može biti i numerička vrednost:


<?php
$gradoviPbr = array(11000 => "Beograd", 18000 => "Niš", 21000 => "Novi Sad");
?>
PRISTUPANJE ELEMENTIMA
ASOCIJATIVNOG NIZA U PETLJI
<?php
$gradoviPbr = array(11000 => "Beograd", 18000 => "Niš", 21000 => "Novi Sad");

foreach($gradoviPbr as $key=>$value)
{
echo "Ključ=". $key. ", Vrednost je=". $value;
echo "<br>";
}
?>
OSNOVNE FUNKCIJE ZA RAD SA NIZOVIMA

73
PREBROJAVANJE ELEMENATA U NIZU
 count($imeniza), sizeof($imeniza)
 vraća ukupan broj elemenata niza
<?php
$students = array("Jack","Peter","Anne","David");
echo count($students);
?>

 array_count_values($imeniza)
 broji koliko jedinstvenih vrednosti ima u nizu
 vraća asocijativni niz koji sadrži tabelu učestanosti
 ključ je element niza, vrednost je broj ponavljanja
SORTIRANJE NIZA

 Sortiranje u rastućem poretku:


 sort() – sortira niz u rastućem poretku
 asort() – sortira asocijativni niz u rastućem poretku po vrednostima
 ksort() - sortira asocijativni niz u rastućem poretku po ključevima
 Sortiranje u opadajućem poretku:
 rsort() – sortira niz u opadajućem poretku
 arsort() - sortira asocijativni niz u opadajućem poretku po vrednostima
 krsort() - sortira asocijativni niz u opadajućem poretku po ključevima
PROMENA REDOSLEDA ELEMENATA NIZA
 shuffle()
 nasumično menja redosled elemenata u nizu
 array_reverse()
 pravi kopiju niza sa elementima u obrnutom redosledu
 array_push()
 dodaje novi element na kraj niza
 array_pop()
 uklanja poslednji element niza
 array_fill (indeks_p, indeks_k, „tekst”)
 upisuje vrednost tekst u elemente sa rednim brojevima od početnog do krajnje navedenog
indeksa
NAVIGACIJA UNUTAR NIZA
 current($niz)
 vraća prvi element
 next($niz)
 prvo pomera pokazivač unapred, a zatim vraća nov tekući element
 prev($niz)
 pomera pokazivač unatrag za jedno mesto, a zatim vraća nov tekući element
 reset($niz)
 vraća pokazivač na prvi element u nizu
 end($niz)
 pomera pokazivač na kraj niza
RAZDVAJANJE ZNAKOVNIH VREDNOSTI U NIZ

 explode(string granicnik, string text)


 deli znakovnu vrednost text na mestima gde naiđe na znakovnu vrednost – graničnik
 rezultat ove funkcije je niz

<?php
$email=„laki.lakicevic@gs.viser.edu.rs";
$email_niz=explode("@", $email);
echo $email_niz[0];//Izlaz je: laki.lakicevic
echo $email_niz[1];//Izlaz je: gs.viser.edu.rs
?>
SPAJANJE ZNAKOVNIH VREDNOSTI U NIZ
 implode(" ", $niz)
 suprotno od funkcije explode()
 spaja elemente niza u jedan niz znakova (string)
 koristi definisani graničnik za odvajanje pojedinih elemenata.

<?php
$tekst_niz=array("Ja", "idem", "u", "skolu", "i", "dobar", "sam", "đak");
$tekst=implode(" ", $tekst_niz);
echo $tekst;//Izlaz je: Ja idem u skolu i dobar sam đak
?>
PRIMER – PRAVLJENJE TABELE
<?php
function napravi_tabelu($niz)
{
echo "<table border = 1>";
reset($niz);
$vrednost = current($niz);
while ($vrednost) {
echo "<tr><td>$vrednost</td></tr>\n";
$vrednost = next($niz);
}
echo '</table>';
}
$moj_niz = array('Prvo polje.','Drugo polje.','Trece polje.');
napravi_tabelu($moj_niz);
?>
ZADACI ZA RAZMIŠLJANJE

 Da li ovo radi?
<body bgcolor="<?php echo '#993333'; ?>">

 Koji izlaz odgovara?


echo "zdravo" , "pozdrav";
a) zdravo , pozdrav
b) zdravo pozdrav
c) zdravopozdrav
ZADACI ZA RAZMIŠLJANJE

 Kako napisati kod da izlaz bude u formatu zdravo pozdrav?

a) echo "zdravo " " " "pozdrav";


b) echo "zdravo". " " ."pozdrav";
c) echo "zdravo." " " ".pozdrav";

You might also like