Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




PHP Sola (2. del)

Slovena


PHP Sola (2. del)

V prejsnjem delu smo spoznali spremenljivke, operatorje in njihovo prioriteto, ter napisali svojo prvo skripto. Do sedaj je bila vsa vsebina statična. To pomeni da se ni spreminjala. Tako kot v zivljenju je tudi v programiranju mnogo "če" stavkov. Z njimi odločamo ali se naj nekaj spremeni, izpise, zapise v datoteke, prebere iz baze,. ali ne. Brez njih enostavno ne gre. J

Odločitveni stavki

Odločitveni stavki odločijo ali se naj določen del kode izvede ali ne. Poznamo več vrst odločitvenih stavkov. Največ krat uporabljen je "if stavek". Njegova sintaksa je sledeča:



if ( pogoj ) else 535q1616f

Če je pogoj pravilen se izvede stavek1, v nasprotnem primeru pa se izvede stavek2. Drugi del, else, lahko izpustimo, kadar ne zelimo nič storiti v primeru kadar je pogoj nepravilen.

if ( pogoj )

V tem primeru se bo izvedel stavek, če je pogoj pravilen, v nasprotnem primeru se ne bo nič zgodilo.

Drugi odločitveni stavek je switch. Poglejmo si njegovo sintakso.

switch ( izraz )

Switch stavek je zelo podoben if stavku. Izvede se del ki je enak izrazu. V primeru da je izraz enak 1 se bo izvedel stavek1, enako v primeru 2. V primeru, če je izraz enak 3, bi se izvedla stavek3 in stavek4. Na prvi pogled bi bili začudeni. Pomembna je besedica break, ki pove naj se izvajanje stavka tukaj zaključi - skoči za zaviti oklepaj. Na koncu imamo besedico default, ki nam pove kaj se naj zgodi v primeru če ni izpolnjen noben drug pogoj. Tako kot pri if stavku lahko tudi tukaj izpustimo default del.

Tretji odločitveni stavek je t.i. trojni ali "?:" stavek. Njegova sintaksa je preprosta:

pogoj ? stavek1 : stavek2;

Če je pogoj pravilen se izvede stavek1, v nasprotnem primeru pa stavek2.

<tukaj_slika4>

Zanke

Dosti krat zelimo določeno stvar večkrat ponoviti. Npr. izpisati pet krat besedo "Zdravo". Poglejmo si na koliko načinov lahko naredimo to. Najbolj primeren stavek za to je for stavek.

for ( $i = 0; $i < 5; $i++ )

For stavek ima v oklepaju tri dele. Prvi del se izvede pred začetkom izvajana for stavka - v nasem primeru postavimo spremenljivko i na 0. Drugi del je pogoj, ki pove kako dolgo se naj for stavek izvaja - v nasem primeru dokler je i manjsi od 5.  Tretji del se izvede ob vsaki ponovitvi for stavka - v nasem primeru se i poveča za ena. Vsakega od teh delov lahko izpustimo, vendar moramo biti pozorni da se ne "zazankamo" - neskončna zanka. Znotraj zavitih oklepajev so stavki, ki se ponavljajo - izpisuje se zdravo.

Drugi zančni stavek je while.

$i = 0;

while ( $i < 5 )

While stavek se izvaja dokler je pogoj v oklepajih pravilen.

Poznamo se stavek do..while.

$i = 0;

do while ( $i < 5 );

Enako kakor while stavek se stavek do..while izvaja dokler je pogoj v oklepajih pravilen. Pomembna razlika med while in do..while je, da se stavek do..while izvede vsaj enkrat, kajti najprej se izvede koda, sele nato se preveri pogoj, v nasprotju z while in for stavkoma, kjer se najprej preveri pogoj in se se le, če je pogoj pravilen izvedejo stavki znotraj zanke.

Omenili smo ze besedico break, ki prekine izvajanje zanke. Zraven lahko dodamo stevilo, koliko zank zelimo prekinit, če so zanke ugnezdene. Podobna beseda je continue, ki vrne izvajanje stavka na začetek, k preverjanju pogoja. Besedica exit konča izvajanje skripte na mestu kjer stoji.

for ( $i = 1; ; $i++ )

$i = 1;

while( true )

$i++;

$i = 1;

do

$i++;

} while( true );

exit;

echo 'To se ne bo nikdar izpisalo';

Omenili smo ugnezdene zanke. To so zanke, ki so znotraj drugih zank. Poglejmo si primer, kjer bomo uporabili znanje, ki smo ga do sedaj pridobili.

$velikost = 10;

for( $i = 1; $i <= $velikost; $i++ )

echo "\n";

echo '  *' . "\n";

$zamik = 0;

$trup = $velikost * 3;

for( $i = $trup; $i > $trup - $trup * 0.24; $i -= 3 )

for( $j = 1; $j <= $i; $j++ )

echo "\n";

Ta koda nam izrise jadrnico iz zvezdic. Sicer dokaj neuporaben primer, ampak za učenje kako zanke delujejo, preko zadovoljiv. Kot vidimo imamo znotraj for zanke se dve for zanki, ki sta ugnezdeni. Vsaka notranja zanka se izvede do konca, sele nato se nadaljuje izvajanje zunanje zanke. Poskusite spremeniti velikost jadrnice in opazujte kako se spreminja oblika jadrnice.

<tukaj_slika5>

<tukaj_slika7>

Polja

Polje (array) je podatkovni tip v katerega lahko shranimo načeloma več vrednosti istega tipa. Ampak ker PHP-ju ne rabimo posebej določiti tipa spremenljivke, lahko v eno polje shranimo različne tipe. Poznamo več vrst polij. Enodimenzionalne, večdimenzionalne, indeksirane in asociativne, lahko pa je tudi mesano.

$polje1 = array();

$polje1[0] = 'Pozdravljen';

$polje1[1] = 'svet !';

$polje2 = array();

$polje2[0] = array(1, 2 => 3);

$polje3['Pozdravljen'] = 'svet !';

Poglejmo si kaj naredi ta koda. Spremenljivki polje1 določimo prazno polje. Sedaj se se ne ve kaksne vrste polje bo. To vrstico lahko izpustimo, ker nam PHP to omogoča in nimamo dodatnega pisanja. Nato polju določimo na prvem indeksu niz. Prvi indeks polja ima stevilo 0. Določimo se vrednost indeksa 1. Spremenljivki polje2, kateri prav tako določimo prazno polje. Na indeksu 0 določimo novo polje, kateremu ze ob kreiranju določimo vrednosti. Vrednost 1 se določi indeksu 0, vrednost 3 pa indeksu 2. Spremenljivka polje3 postane avtomatično polje ker smo ji določili indeks z imenom Pozdravljen in določili vrednost "svet !". Polje1 in polje2 sta indeksirani polji, ker imata za indekse samo stevilke. Polje3 je asociativno, ker ima indeks z nizom. Če ima polje indekse s stevilkami in nizi je polje mesano.

Sedaj si na kratko poglejmo najbolj uporabljene funkcije pri delu s polji.

Funkcija implode(lepilo, polje) sprejme dva argumenta in vrne niz. Vrnjen niz sestavljajo vse vrednosti polja sestavljena z lepilom, ki smo ga določili ob klicu funkcije.

Funkcija explode(ločilo, niz), sprejme kot prvi argument ločilo s katerim razbije drugi argument narazen. Vrne polje vseh delov.

Funkcija print_r(polje) izpise drevesno predstavo polja. Argument je lahko tipa stevilo, niz, polje, objekt.

PHP pozna tudi zelo uporaben gradnik foreach, s katerim se lahko preprosto sprehodimo po celotnem polju. Sedaj si se poglejmo opisano na primeru.

echo implode( ' ', $polje1 );

$niz = ' Pozdravljen svet !';

$polje = explode( ' ', $niz );

print_r( $polje );

foreach( $polje3 as $indeks => $vrednost )

Primer je nadaljevanje prejsnje kode, ki dejansko naredi nekaj s podatki in jih izpise.

Dobra lastnost polj je sortiranje. Sortiramo jih lahko na več načinov. Glede na indeks, vrednost. Po naravnem logaritmu ali matematičnem, padajoče ali narasčajoče. Lahko naredimo tudi svoje sortiranje s pomočjo funkcije kateri določimo kriterije za sortiranje.

$polje1 = array();

$polje1[0] = 'Pozdravljen';

$polje1[1] = 'svet !';

$polje2 = array();

$polje2[0] = array( 1, 2 => 3 );

$polje3['Pozdravljen'] = 'svet !';

$polje3['Kako'] = 'kaj ?';

echo implode( ' ', $polje1 );

$niz = 'Pozdravljen svet !';

$polje = explode( ' ', $niz );

print_r( $polje );

foreach( $polje3 as $indeks => $vrednost )

<tukaj_slika6>

Manipulacija niza

Niz je sestavljen iz različnih znakov. To so črke, stevilke, ter znaki ASCII tabele do 254. Marsikdaj zelimo izvedi kaksen podatek o nizu. Če zelimo ugotoviti dolzino niza uporabimo funkcijo strlen(niz). Za izločitev določenega dela niza uporabimo substr(niz, začetek, dolzina). Vrne nam del niza od začetka naslednjih dolzina znakov. Tretji argument - dolzina je neobvezen in je v primeru da ni podan, določena dolzina do konca niza. Argumenta začetek in dolzina sta stevili. Marsikdaj zelimo zamenjati določen del niza. To storimo s funkcijo str_replace(beseda, zamenjava, niz). Funkcija vrne nov niz ki zamenja vse besede z zamenjavo v nizu.

$niz = 'Rdeča kapica se je sprehajala po gozdu.';

echo 'Dolzina $niz je ' . strlen( $niz ) . " znakov.";

echo substr($niz, 0, 12);

echo str_replace( 'gozd', 'park', $niz );

Predstavljajmo si, da smo preko obrazca dobili vrednost polja, ki ga zelimo preveriti. V polje bi moral uporabnik vnesti veljavni elektronski naslov. S pomočjo do sedaj navedenih funkcij tega ne bi mogli ugotovi, oz. na precej kompleksen način. To delo nam poenostavijo regularni izrazi.

Regularni izrazi

S pomočjo regularnih izrazov lahko ugotovimo ali je v nizu določeno zaporedje znakov, kako se začne, konča ali vsebuje določeno stevilo znakov, konec koncev lahko tudi izrezemo določen del niza, ki ga oklepajo definirani znaki. Pogledali si bomo le osnove, kajti regularni izrazi lahko ob večji kompleksnosti izgledajo precej nepregledno skozi oči nepoznavalca. Ampak ne se bat, dokler se drzimo pravil zadeva deluje tudi če je dolga par vrstic. Poglejmo si oznake, ki so uporabljene v regularnih izrazih.

Oznaka

Pomen

"escape" znak - uporabljen za iskanje oznak kot je pika, oklepaji itd.

Ujemaj vse znake razen nove vrstice

x

Ujemaj znak x

^x

Ujema vse znake razen x

[x]

Ujemaj vse pojavitve znaka x - [abxyz] bo ujemalo vse pojavitve a, b, x, y, ali z znaka

OR operator - [x|y] ujema znak x ali y

Uporabljena za grupiranje znakov ali pojavitev

Uporabljena za definiranje stevila pojavitev

Pojavite se mora pojaviti točno x krat

Pojavitev se mora pojaviti vsaj x krat

Pojavitev se mora pojaviti vsaj x krat ampak ne več kot y krat

Znak je neobvezen ali se lahko pojavi največ en krat, enako kot

Znak je neobvezen ali se lahko pojavi večkrat, enako kot

Znak se mora pojaviti vsaj enkrat ali več, enako kot

Ujemaj začetek vrstice

Ujemaj konec vrstice

Sedaj si poglejmo kako bi izgledal regularni izraz za preverjanje elektronskega naslova.

^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.([a-zA-Z])$

Mogoče na prvi pregled le skupek znakov ki nam nič ne pove, ampak ravno nasprotno. Poglejmo si postopoma kaj posamezen del pomeni. Na začetku znak ^ pove, da se mora niz začeti z naslednjim znakom. [a-zA-Z0-9._-]+ nam pove da mora niz vsebovati velike ali male črke angleske abecede ali cifre, piko, pomisljaj ali podčrtaj, + nam pove da se lahko ta del pojavi večkrat (npr. ime.priimek). Nato znak @, za njim enako kakor prej (domena), ter piko in na koncu od 2 do 4 znake angleske abecede, za TLD (com, net, org,.). Opozorilo: Za novejse TLD bi morali podaljsati dolzino na več kot 4.

PHP ima podporo regularnih izrazov ze vgrajeno in ima za to delo funkcijo ereg(regularni_izraz, niz). Torej preverimo elektronski naslov na naslednji način.

$email='[email protected]';

if ( ereg('^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.([a-zA-Z])$',$email)) else

Upam, da vam zadnji "skupek znakov" ni vzel volje in nestrpno pričakujete ze naslednji del v katerem si bomo ogledali funkcije, klice teh, ter resnično vključili podatkovno bazo.


Document Info


Accesari: 1625
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )