๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑
WEBTOOLS FORUM - RECOMMENDED SETTINGS/SETARI RECOMANDATE: BROWSER=MOZILLA FIREFOX OR IE REZOLUTION=1280x1024| FORUMUL ESTE IN PLINA DEZVOLTARE VA RUGAM SA NE AJUTATI! ► DATA INFIINTARII: 19-07-2008 ►
Lista Forumurilor Pe Tematici
๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑ | Inregistrare | Login

POZE ๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑

Nu sunteti logat.
Nou pe simpatie:
beatrice17 pe Simpatie.ro
Femeie
25 ani
Bucuresti
cauta Barbat
25 - 80 ani
๑۩۞۩๑ » WEBTOOLS « ๑۩۞۩๑ / » TURORIALE PHP « / Structuri de control in Php Moderat de AndreyNek, MadaLino
Autor
Mesaj Pagini: 1
MadaLino
Moderator

Din: Hotel Paradis
Inregistrat: acum 17 ani
Postari: 240
După cum ştiţi, instrucţiunile PHP sunt separate prin caracterul ';'. Deseori, suntem nevoiţi să grupăm mai multe instrucţiuni pentru a forma un bloc. Astfel, obţinem instrucţiunile compuse care sunt formate din mai multe instrucţiuni simple, separate prin caracterul ';'. În PHP, instrucţiunile compuse au următoarea sintaxa:

{ instructiune #1 instructiune #2 ... instructiune #n }

Instrucţiunile care formează instrucţiunea compusă pot fi de orice tip: orice structură de control, alte instrucţiuni compuse etc. Aşadar un bloc de instructiuni (o instrucţiune compusă, în PHP, este delimitat de acolade.


Structura if

Una dintre cele mai importante structuri în orice limbaj este cea alternativa. În PHP sintaxa acestei structuri este următoarea:

if (conditie) instructiune

Folosirea unei astfel de structuri indică faptul că instrucţiunea se va executa dacă şi numai dacă valoarea expresiei conditie (eventual după conversia la tipul boolean) este true.


Construcţia if - else

În foarte multe cazuri dorim să executăm o altă instrucţiune dacă valoarea expresiei condiţie este false. În PHP putem utiliza o construcţie de tipul if - else în acest scop. Sintaxa este:

if (conditie) instructiune #1
else instructiune #2


Construcţia elseif

Uneori, suntem nevoiţi să folosim structuri alternative îmbricate în diferite scopuri. Folosind construcţii de tipul if - else vom obţine o secvenţă de tipul:

if (conditie #1) instructiune #1
elseif (conditie #2) instructiune #2
else ...
elseif (conditie #n) instructiune #n
else instructiune #n+1

Limbajul PHP permite folosirea unei prescurtări şi anume construcţia elseif. Practic, aceasta înlocuieste un else urmat de un if. Folosind această structură, codul anterior poate fi scris astfel:

if (conditie #1) instructiune #1
elseif (conditie #2) instructiune #2
elseif ...
elseif (conditie #n) instruciune #n
else instructiune #n+1


Sintaxe alternative

Dacă dorim să se execute mai multe instrucţiuni când este indeplinită o anumită condiţie, atunci ar trebui să folosim instrucţiunile compuse. De exemplu, pentru o structură if vom scrie:

if (conditie):
instructiune #1
instructiune #2 ...
instructiune #n
endif

Practic, pentru orice structură de control PHP, putem înlocui acolada deschisa prin caracterul ':' şi acolada închisă printr-un cuvânt cheie opţinut prin adăugarea prefixului end la cuvântul cheie care indică structura de control. Trebuie observat faptul că else şi elseif nu sunt structuri, ele fiind simple construcţii folosite în cadrul structurii if. Din acest motiv, nu vom avea niciodată endelse sau endelseif, ci doar endif-uri. Aşadar, sintaxa alternativă pentru o structură if în care se folosesc construcţii else şi elseif este următoarea:

if (conditie #1)
grup instructiuni #1
elseif (conditie #2)
grup instructiuni #2
elseif ...
elseif (conditie #n)
grup instructiuni #n
else grup instructiuni #n+1
endif;


Structura while

Majoritatea script-urilor PHP vor conţine cicluri. Pentru a folosi o buclă anterior condiţionată vom utiliza structura while. Sintaxa acestei proceduri este:

while (conditie) instructiune

Efectul acestei structuri este executarea instrucţiunii atât timp cât valoarea expresiei condiţie (eventual după conversia la tipul boolean) este true. Trebuie observat faptul că este posibil ca instrucţiunea să nu fie executată niciodată. Si pentru această structură avem la dispoziţie o sintaxă alternativă şi anume:

while (conditie):
grup instructiuni
endwhile;


Structura do - while

Uneori, dorim să folosim bucle posterior condiţionate. În acest scop, în PHP avem la dispoziţie structura do - while a cărei sintaxă este:

do instructiune while (conditie);

Singura diferenţă faţă de structura while este faptul că valoarea condiţiei este determinată, de fiecare dată, după executarea instrucţiunii. Ca urmare, instrucţiunea va fi executată cel puţin o dată. Nu există o sintaxă alternativă pentru această structură.


Structura for

O alternativă cu o funcţionalitate mai ridicată pentru utilizarea buclelor este structura repetitivă for. Sintaxa este foarte asemănătoare cu cea din limbajele C/C++ şi Java şi anume:

for (expresie #1; expresie #2; expresie #3)
instructiune

Prima expresie este evaluată o singură dată, înainte de începerea execuţiei ciclului. Instrucţiunea este executată cât timp cea de-a doua expresie are valoarea true. De fiecare dată, după executarea instrucţiunii, este evaluată cea de-a treia expresie. Oricare dintre cele trei expresii poate lipsi; în cazul în care o expresie lipseste, se consideră că ea are valoarea true. Pentru structura for poate fi folosită şi următoarea sintaxă alternativă:

for (expresie #1; expresie #2; expresie #3):
instructiune
endfor;


Exemple

În continuare aveţi un exemplu care afişează numerele cuprinse între 1 şi 15. Numerele pare vor fi scrise cu roşu, iar cele impare care sunt divizibile cu 3 cu verde, iar celelalte cu albastru. Vom folosi o structură repetitivă pentru a afişa numerele şi o structură alternativă pentru a determina culoarea cu care vor fi afişate. Putem utiliza oricare dintre cele trei structuri repetitive; codul PHP pentru cele trei variante este prezentat mai jos.


Cod:

<?php
// Structuri alternative si repetitive
// Bucla for
// Exemplu
for ($i = 1; $i <= 15; $i++):
echo "<b><font size = 3 ";
echo "color = ";
if ( ! ($i % 2))
echo "red";
elseif ( ! ($i % 3))
echo "green";
else
echo "blue";
echo "> $i </font></b>";
endfor;
?>


Cod:

<?php
// Structuri alternative si repetitive
// Bucla while
// Exemplu
$i = 1;
while ($i<=15)
    {
    echo "<b><font size = 3 ";
    echo "color = ";
    if ( ! ($i % 2))
        echo "red";
    elseif ( ! ($i % 3))
        echo "green";
    else
        echo "blue";
        echo "> $i </font></b>";
    $i++;
    }
?>


Cod:

<?php
// Structuri alternative si repetitive
// Bucla do - while
// Exemplu
$i = 1;
do
    {
    echo "<b><font size = 3 ";
    echo "color = ";
    if ( ! ($i % 2))
        echo "red";
    elseif ( ! ($i % 3))
        echo "green";
    else
        echo "blue";
        echo "> $i </font></b>";
    $i++;
    }
while ($i <= 15);
?>

Rezultat:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15



Structura foreach

Această structură poate fi folosită pentru a realiza o iteraţie printre toate elementele unui vector. Aşadar, ea nu poate fi folosită decât împreună cu vectorii; utilizarea sa asupra unei variabile de alt tip duce la apariţia de erori. Există două sintaxe acceptate pentru această structură şi anume:

foreach (expresie_vectoriala as $valoare)
instructiune

sau

foreach (expresie_vectoriala as $cheie => $valoare)
instructiune

Dacă se utilizează prima variantă, atunci la fiecare iteraţie valoarea elementului curent este atribuită variabilei $valoare şi apoi se trece la elementul următor (a cărui valoare va fi atribuită variabilei la următoarea iteraţie). Execuţia ciclului se încheie în momentul în care nu mai există alte elemente în vector. Singura diferenţa care apare în cazul utilizării celei de-a doua variante este faptul că la fiecare iteraţie valoarea cheii elementului curent este atribuită variabilei $cheie. În continuare este un exemplu de folosire a celor doua sintaxe ale structurii foreach.


Cod:

<?php
// structura foreach
echo '<table width="100%"><tr><td with="50%">';
// un vector obisnuit
$a = array (1, 2, 3, 10);
echo "<b>Parcurgerea unui vector:</b><br><ol>";
foreach ($a as $v)
    echo "<li><i>Valoarea curenta este </i>:<tt>$v</tt>\n<br>";
    /* parcurgerea vectorului, contorizarea elementelor si afisarea numarului de ordine al elementului curent */
    $i = 0;

echo "</ol><b>O alta parcurgere: </b><ul>";
foreach ($a as $v)
    {
    echo "<li><tt>\$a[$i] => $v</tt>\n <br>";
    $i++;
    }

/* un vector ale carui elemente sunt identificate prin chei */
$a = array
    (
    "unu" => 1,
    "doi" => 2,
    "trei" => 3,
    "zece" => 10
    );
echo "</ul><td><width = 50%><b>Parcurgere cu afisarea cheilor: </b><ul>";
foreach ($a as $k => $v)
    {
    echo "<li><tt>\$a[$k] => $v</tt>\n";
    }

// o matrice
$b[0][0] = "a";
$b[0][1] = "b";
$b[1][0] = "c";
$b[1][1] = "d";
echo "</ul><b>Parcurgerea unei matrice:</b><br><tt>";
foreach ($b as $v1)
    {
    echo "&nbsp;&nbsp;";
    foreach ($v1 as $v2)
        echo "$v2\n";
        echo "<br>";
    }
echo "</tt><br><b>Parcurgerea unui vector generat dinamic: </b><br><tt>&nbsp;&nbsp;";

// un vector generat dinamic
foreach (array (1, 2, 3, 4, 5) as $v)
    echo "$v\n";     

echo "</tt></td></tr></table>";
?>

Rezultatul codului de mai sus este:
Parcurgerea unui vector:

   1. Valoarea curenta este :1
   2. Valoarea curenta este :2
   3. Valoarea curenta este :3
   4. Valoarea curenta este :10

O alta parcurgere:

    * $a[0] => 1
    * $a[1] => 2
    * $a[2] => 3
    * $a[3] => 10

    Parcurgere cu afisarea cheilor:

    * $a[unu] => 1
    * $a[doi] => 2
    * $a[trei] => 3
    * $a[zece] => 10

Parcurgerea unei matrice:
  a b
  c d

Parcurgerea unui vector generat dinamic:
  1 2 3 4 5



Structura switch

În anumite cazuri trebuie să efectuăm anumite operaţii în funcţie de anumite valori ale unei expresii. O soluţie ar fi folosirea unor structuri if îmbricate sau a uneia singure în care apar mai multe construcţii elseif.
Să presupunem că o anumită variabilă poate avea cinci valori distincte şi pentru fiecare valoare trebuie executată o anumită instrucţiune. Dacă folosim structura if, secvenţa de cod va fi următoarea:

if ($variabila == valoare #1)
instructiune #1
elseif ($variabila == valoare #2)
instructiune #2
elseif ($variabila == valoare #3)
instructiune #3
elseif ($variabila == valoare #4)
instructiune #4
else
instructiune #5

Folosind structura switch, secvenţa echivalentă este:

swich ($variabila) {
case valoare #1: instructiune #1
break;
case valoare #2: instructiune #2
break;
case valoare #3: instructiune #3
break;
case valoare #4: instructiune #4
break;
case valoare #5: instructiune #5
break;
}

Prezentăm în continuare sintaxa generală a structurii switch:

switch (expresie) {
case valoare #1: grup instructiuni #1
case valoare #2: grup instructiuni #2
...
case valoare #n: grup instructiuni #n
[default: grup instructiuni #n + 1]
}

Pentru început se determină valoarea expresiei şi apoi se verifică dacă aceasta apare ca valoare pentru una dintre construcţiile case. În caz afirmativ, toate instrucţiunile începând cu cea corespunzătoare valorii respective (până la sfârşitul blocului swich) vor fi executate. Execuţia acestor instrucţiuni poate fi întreruptă dacă este folosită instrucţiunea break, care va fi prezentată mai jos. Dacă valoarea expresiei nu corespunde nici uneia dintre valorile corespunzătoare construcţiilor case, se execută instrucţiunile corespunzătoare construcţiei default. Dacă aceasta lipseste, atunci nu se execută nici o instrucţiune. Trebuie precizat faptul că valorile corespunzătoare construcţiilor case pot fi numere întregi, numere reale sau şiruri de caractere; nu pot fi utilizate obiecte sau vectori.


Instrucţiunea break

Această instrucţiune poate fi folosită pentru a întrerupe forţat execuţia unui ciclu sau a secvenţei de instrucţiuni corespunzătoare unei structuri switch. Instrucţiunea poate fi urmată de un argument care indică numărul de structuri îmbricate a căror execuţie se încheie. Valoarea implicită este 1, deci se întrerupe execuţia unei singure structuri. Următoarea secvenţă de cod PHP realizează parcurgerea elementelor unui vector de numere întregi până în momentul în care se întâlneşte un număr negativ.


Cod:

<?php
foreach ($a as $v)
    if ($v < 0)
    break;
?>


Mai departe aveţi cazul în care este întreruptă execuţia mai multor cicluri; vom considera că parcurgem elementele unei matrice pătratice cu n elemente şi n coloane până în momentul în care întâlnim o valoare nulă.


Cod:

<?php
for ($i = 0; $i < $n; $i++)
    for ($j = 0; $j < $n; $j++)
        if ( ! $a [$i] [$j] )
        break 2;
?>


Instrucţiunea break poate fi utilizată pentru întreruperea execuţiei secvenţelor de instrucţiuni corespunzătoare structurilor for, foreach, while, do - while şi switch.


Instrucţiunea continue

Această instrucţiune este folosită pentru a întrerupe execuţia secvenţei de instrucţiuni din interiorul unui ciclu şi trecerea la următoarea iteraţie. În cazul instrucţiunii for, înainte de următoarea iteraţie se evaluează (execută expresia de incrementare (expresia #3 din sintaxa generală. La fel ca şi în cazul instrucţiunii break, poate apărea un argument care indică numărul structurilor îmbricate asupra cărora are efect. Exemplul următor realizează afişarea elementelor unui şir de numere întregi care sunt mai mari decât 1000.


Cod:

<?php
foreach ($a as $v)
    {
    if ($v <= 1000)
    continue;
    echo $v;
    }
?>


Următorul exemplu ilustrează efectul folosirii argumentelor pentru instrucţiunea continue.


Cod:

<?php
$i = 0;
while ($i++ <5)
    {
    echo "Ciclul #1 <br>\n";
    while (1)
        {
        echo "��Ciclul #2 <br>\n";
        while (1)
            {
            echo "��Ciclul #3<br>\n";
            continue 3;
            }
        echo "Acest mesaj nu va fi afisat niciodata.<br>\n";
        }
    echo "Nici acest mesaj nu va fi afisat niciodata.<br>\n";
    }
?>

Rezultatul codului de mai sus este:

Ciclul #1
  Ciclul #2
  Ciclul #3
Ciclul #1
  Ciclul #2
  Ciclul #3
Ciclul #1
  Ciclul #2
  Ciclul #3
Ciclul #1
  Ciclul #2
  Ciclul #3
Ciclul #1
  Ciclul #2
  Ciclul #3


Alte structuri PHP

Există mai multe alte structuri PHP care pot fi utilizate în anumite scopuri. Vom aminti acum câteva dintre ele:
Structurile include, require, include_once şi require_once pot fi utilizate pentru a "insera" anumite instrucţiuni care sunt păstrate într-un alt fişier (document). Interpretorul PHP consideră că secvenşa din fişierul inserat se află în fişierul din care s-a "comandat" inserarea în poziţia în care apare structura de inserare.
O altă structură este declare care permite crearea unor directive în execuţie.
Funcţiile PHP trebuie să utilizeze instrucţiunea return pentru a furniza un rezultat.


_______________________________________


" Cui nu-i place cum gandesc multa    ii doresc ! "



pus acum 17 ani
   
Pagini: 1