Curs Web Development
Curs HTML
Curs CSS
Curs Javascript
Curs PHP
Curs Phyton
Curs SQL
Curs SEO

Structuri de control

Instrucțiuni condiționale if / else / elseif în PHP

Instrucțiunile condiționale sunt folosite pentru a lua decizii în cod, adică pentru a executa anumite bucăți de cod doar atunci când o condiție este adevărată. În PHP, cele mai des folosite sunt if, else și elseif.

Instrucțiunea if

Se folosește pentru a verifica o condiție. Dacă este adevărată (true), codul din interior se execută.

<?php
$varsta = 20;

if ($varsta >= 18) {
    echo "Ai voie să intri pe site.";
}
?>

Instrucțiunea if / else

Dacă condiția if nu este adevărată, atunci se execută ramura else.

<?php
$varsta = 15;

if ($varsta >= 18) {
    echo "Acces permis.";
} else {
    echo "Acces interzis. Trebuie să ai cel puțin 18 ani.";
}
?>

Instrucțiunea if / elseif / else

Când există mai multe condiții posibile, putem folosi elseif pentru a le verifica pe rând.

În codul de mai jos se verifică prima condiție $nota >= 9. Dacă e adevărată, se afișează „Foarte bine!” și codul nu mai verifică restul.

<?php
$nota = 7;

if ($nota >= 9) {
    echo "Foarte bine!";
} elseif ($nota >= 7) {
    echo "Bine!";
} elseif ($nota >= 5) {
    echo "Suficient.";
} else {
    echo "Insuficient.";
}
?>

Exemple practice cu instrucțiuni condiționale în PHP

Iată câteva situații reale în care folosim if / else / elseif pentru a lua decizii în aplicații:

Exemplu 1: Verificarea autentificării utilizatorului

Vrem să verificăm dacă un utilizator este logat sau nu. Dacă este logat, îi afișăm un mesaj de bun venit, altfel îl rugăm să se conecteze.

<?php
$esteLogat = false;

if ($esteLogat) {
    echo "Bun venit în contul tău!";
} else {
    echo "Te rugăm să te conectezi pentru a continua.";
}
?>

Exemplu 2: Reducere în funcție de vârstă

Un magazin oferă reducere pentru elevi și pensionari. Folosim if / elseif / else pentru a stabili reducerea aplicată.

<?php
$varsta = 70;

if ($varsta < 18) {
    echo "Primești reducere de 20% (elev).";
} elseif ($varsta >= 65) {
    echo "Primești reducere de 30% (pensionar).";
} else {
    echo "Nu se aplică reducere.";
}
?>

Exemplu 3: Verificarea parolei introduse

Aici simulăm verificarea unei parole introduse de utilizator. Dacă parola este corectă, afișăm un mesaj de succes, altfel afișăm o eroare.

<?php
$parolaCorecta = "1234";
$parolaIntrodusa = "123";

if ($parolaIntrodusa === $parolaCorecta) {
    echo "Parolă corectă! Ai acces.";
} else {
    echo "Parolă incorectă! Te rugăm să încerci din nou.";
}
?>

Exemplu 4: Clasificarea notelor școlare

În funcție de nota elevului, afișăm o apreciere. Acesta este un exemplu clasic pentru elseif.

<?php
$nota = 8;

if ($nota >= 9) {
    echo "Excelent!";
} elseif ($nota >= 7) {
    echo "Foarte bine!";
} elseif ($nota >= 5) {
    echo "Ai trecut!";
} else {
    echo "Din păcate, ai picat examenul.";
}
?>

Instrucțiunea switch în PHP

Instrucțiunea switch este o alternativă la utilizarea mai multor if / elseif / else. Ea se folosește atunci când dorim să comparăm o singură valoare cu mai multe opțiuni posibile. Astfel, codul devine mai ordonat și mai ușor de citit.

Sintaxa generală a lui switch

Forma de bază arată astfel:

<?php
switch (expresie) {
    case valoare1:
        // cod executat dacă expresia == valoare1
        break;

    case valoare2:
        // cod executat dacă expresia == valoare2
        break;

    case valoare3:
        // cod executat dacă expresia == valoare3
        break;

    default:
        // cod executat dacă expresia nu se potrivește cu niciun caz
}
?>

Explicație:

Exemplu practic: zilele săptămânii

Vrem să afișăm ce zi a săptămânii este în funcție de un număr (1 = Luni, 2 = Marți etc.).

<?php
$zi = 3;

switch ($zi) {
    case 1:
        echo "Luni";
        break;
    case 2:
        echo "Marți";
        break;
    case 3:
        echo "Miercuri";
        break;
    case 4:
        echo "Joi";
        break;
    case 5:
        echo "Vineri";
        break;
    case 6:
        echo "Sâmbătă";
        break;
    case 7:
        echo "Duminică";
        break;
    default:
        echo "Valoare invalidă! Ziua trebuie să fie între 1 și 7.";
}
?>

Exemplu cu „fall-through” (fără break)

Dacă nu folosim break, execuția continuă și în cazurile următoare. Uneori acest lucru este intenționat.

<?php
$nota = 10;

switch ($nota) {
    case 10:
    case 9:
        echo "Excelent!";
        break;
    case 8:
    case 7:
        echo "Foarte bine!";
        break;
    case 6:
    case 5:
        echo "Ai trecut!";
        break;
    default:
        echo "Ai picat examenul.";
}
?>

Aici, atât nota 10 cât și nota 9 duc la același rezultat (Excelent!), fără să duplicăm codul.

Exemplu: Meniu dinamic generat cu PHP și switch

În loc să scriem manual opțiunile în HTML, putem să le păstrăm într-un array PHP. Astfel, codul devine mai flexibil și mai ușor de actualizat.

<?php
// Definim opțiunile într-un array asociativ
$meniu = [
    1 => "Afișează profilul",
    2 => "Setări cont",
    3 => "Ieșire"
];
?>

<!-- Formular HTML generat de PHP -->
<form method="post">
    <label for="optiune">Alege o opțiune din meniu:</label><br><br>
    <select name="optiune" id="optiune">
        <?php
        // Generăm automat opțiunile din array
        foreach ($meniu as $cheie => $valoare) {
            echo "<option value='$cheie'>$valoare</option>";
        }
        ?>
    </select><br><br>

    <button type="submit">Trimite</button>
</form>

<?php
// Procesăm alegerea utilizatorului
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $optiune = $_POST["optiune"];

    echo "<h3>Rezultat:</h3>";

    switch ($optiune) {
        case 1:
            echo "Ai ales să vezi profilul.";
            break;
        case 2:
            echo "Ai ales să modifici setările contului.";
            break;
        case 3:
            echo "Programul se închide... La revedere!";
            break;
        default:
            echo "Opțiune invalidă.";
    }
}
?>
🔧 Meniu dinamic generat cu PHP și switch
<?php
// Definim opțiunile într-un array asociativ
$meniu = [
    1 => "Afișează profilul",
    2 => "Setări cont",
    3 => "Ieșire"
];
?>

<!-- Formular HTML generat de PHP -->
<form method="post">
    <label for="optiune">Alege o opțiune din meniu:</label><br><br>
    <select name="optiune" id="optiune">
        <?php
        // Generăm automat opțiunile din array
        foreach ($meniu as $cheie => $valoare) {
            echo "<option value='$cheie'>$valoare</option>";
        }
        ?>
    </select><br><br>

    <button type="submit">Trimite</button>
</form>

<?php
// Procesăm alegerea utilizatorului
if ($_SERVER["REQUEST_METHOD"] === "POST") {
    $optiune = $_POST["optiune"];

    echo "<h3>Rezultat:</h3>";

    switch ($optiune) {
        case 1:
            echo "Ai ales să vezi profilul.";
            break;
        case 2:
            echo "Ai ales să modifici setările contului.";
            break;
        case 3:
            echo "Programul se închide... La revedere!";
            break;
        default:
            echo "Opțiune invalidă.";
    }
}
?>

Avantajele acestei metode

Când alegem switch în loc de if / elseif?

Buclele while în PHP

O buclă while este folosită atunci când vrem să repetăm o anumită instrucțiune atâta timp cât o condiție este adevărată. Practic, PHP verifică condiția la fiecare iterație și, dacă rezultatul este true, execută codul din interiorul buclei. Când condiția devine false, bucla se oprește.

Sintaxa buclei while

while (condiție) {
    // cod care se execută cât timp condiția este adevărată
}

Exemplu practic cu while

<?php
$contor = 1;

while ($contor <= 5) {
    echo "Numărul este: $contor <br>";
    $contor++;
}
?>

Explicație pas cu pas

Unde este utilă bucla while?

Bucla while se folosește atunci când nu știm dinainte câte iterații sunt necesare. De exemplu: citirea datelor dintr-un fișier până la sfârșit, parcurgerea rezultatelor dintr-o interogare SQL sau așteptarea unei condiții externe.

Buclele do...while în PHP

O buclă do...while este asemănătoare cu while, dar are o diferență importantă: codul din interior se execută cel puțin o dată, indiferent dacă condiția este adevărată sau falsă. Abia după prima execuție, condiția este verificată pentru următoarele iterații.

Sintaxa buclei do...while

do {
    // cod care se execută cel puțin o dată
} while (condiție);

Exemplu practic cu do...while

<?php
$contor = 6;

do {
    echo "Numărul este: $contor <br>";
    $contor++;
} while ($contor <= 5);
?>

Explicație pas cu pas

Când folosim do...while?

Se folosește atunci când vrem să rulăm codul cel puțin o dată, chiar dacă ulterior condiția nu este îndeplinită. Exemple practice: afisarea unui meniu interactiv, cererea repetată a datelor de la utilizator până când introduce o valoare corectă.

Buclele for în PHP

Bucla for este una dintre cele mai utilizate în PHP. Ea este ideală atunci când știm dinainte de câte ori vrem să repetăm o instrucțiune. Spre deosebire de while sau do...while, care verifică doar o condiție, bucla for are trei componente esențiale:

Sintaxa buclei for

for (inițializare; condiție; incrementare/decrementare) {
    // codul care se repetă
}

Exemplu practic simplu cu for

<?php
for ($i = 1; $i <= 5; $i++) {
    echo "Valoarea contorului este: $i <br>";
}
?>

Explicație pas cu pas

Când folosim bucla for?

Este utilă pentru situații clare în care știm numărul exact de iterații: afișarea numerelor, parcurgerea unei liste cu lungime fixă, generarea de tabele sau structuri repetitive.

Buclele foreach în PHP

Bucla foreach este special concepută pentru a lucra cu array-uri și colecții. Ea parcurge fiecare element dintr-un array fără să fie nevoie să știm dinainte câte elemente există. Astfel, este cea mai simplă și elegantă metodă de a itera prin liste de valori.

Sintaxa buclei foreach

foreach ($array as $valoare) {
    // cod care folosește $valoare
}

foreach ($array as $cheie => $valoare) {
    // cod care folosește $cheie și $valoare
}

Exemplu practic simplu

<?php
$fructe = ["mere", "pere", "banane"];

foreach ($fructe as $fruct) {
    echo "Îmi place să mănânc $fruct <br>";
}
?>

Exemplu cu chei și valori

<?php
$preturi = [
    "mere" => 3,
    "pere" => 4,
    "banane" => 5
];

foreach ($preturi as $fruct => $pret) {
    echo "Prețul pentru $fruct este $pret lei <br>";
}
?>

Modificarea elementelor direct în foreach

Dacă vrem să modificăm elementele unui array în timpul iterării, putem folosi referințe:

<?php
$fructe = ["mere", "pere", "banane"];

foreach ($fructe as &$fruct) {
    $fruct = strtoupper($fruct); // transformăm fiecare element în majuscule
}
unset($fruct); // important pentru a evita referințe neașteptate
print_r($fructe);
/* Array
(
    [0] => MERE
    [1] => PERE
    [2] => BANANE
)
*/
?>

Foreach cu array multidimensional

Parcurgerea array-urilor multidimensionale se face prin foreach-uri imbricate:

<?php
$users = [
    ["nume" => "Ioan", "varsta" => 28],
    ["nume" => "Ana", "varsta" => 25],
];

foreach ($users as $user) {
    echo "Nume: ".$user['nume'].", Varsta: ".$user['varsta']."<br>";
}
?>

Foreach cu obiecte

Foreach funcționează și cu obiecte pentru a itera proprietățile acestora:

<?php
class User {
    public $nume;
    public $email;
    public function __construct($nume, $email) {
        $this->nume = $nume;
        $this->email = $email;
    }
}

$user = new User("Ioan", "ioan@example.com");

foreach ($user as $proprietate => $valoare) {
    echo "$proprietate: $valoare <br>";
}
?>

De ce să folosim foreach?

Este foarte eficient atunci când lucrăm cu array-uri sau obiecte. În loc să folosim un for clasic cu un contor, foreach face codul mai simplu, mai ușor de citit și reduce riscul erorilor.

Bune practici pentru foreach

Compararea tipurilor de bucle în PHP

PHP oferă mai multe tipuri de bucle pentru a repeta instrucțiuni. Alegerea buclei potrivite depinde de situație: știm sau nu numărul exact de iterații, lucrăm cu array-uri, sau vrem să executăm codul măcar o dată.

1. Bucla for

Se folosește atunci când știm de la început câte repetări sunt necesare. Este ideală pentru numărători sau parcurgerea unor intervale numerice.

<?php
for ($i = 1; $i <= 5; $i++) {
    echo "Valoarea lui i este: $i <br>";
}
?>

2. Bucla foreach

Special concepută pentru array-uri și obiecte. Parcurge automat fiecare element, fără a avea nevoie de contor explicit.

<?php
$fructe = ["mere", "pere", "banane"];

foreach ($fructe as $fruct) {
    echo "Fruct: $fruct <br>";
}
?>

3. Bucla while

Execută instrucțiuni atâta timp cât condiția este adevărată. Se folosește atunci când nu știm dinainte câte iterații vor fi.

<?php
$contor = 1;

while ($contor <= 5) {
    echo "Numărul este: $contor <br>";
    $contor++;
}
?>

4. Bucla do...while

Similară cu while, dar execută codul cel puțin o dată, chiar dacă condiția este falsă de la început.

<?php
$contor = 6;

do {
    echo "Numărul este: $contor <br>";
    $contor++;
} while ($contor <= 5);
?>

Tabel comparativ între bucle

Tip buclă Când o folosim Caracteristici
for Când știm numărul exact de pași Folosește contor numeric (inițializare, condiție, incrementare)
foreach Pentru array-uri și obiecte Nu necesită contor, parcurge direct elementele
while Când numărul de iterații nu este cunoscut Verifică condiția înainte de fiecare execuție
do...while Când vrem ca blocul să ruleze cel puțin o dată Condiția este verificată după prima execuție

Validarea simplă a unui formular în PHP

Validarea formularelor este esențială pentru a te asigura că utilizatorul introduce date corecte și complete înainte de procesare. Vom crea un formular cu nume și email, iar PHP va verifica dacă aceste câmpuri sunt completate și dacă email-ul este valid.

Formular HTML

<form method="post" action="">
    <label for="nume">Nume:</label>
    <input type="text" id="nume" name="nume"><br><br>

    <label for="email">Email:</label>
    <input type="text" id="email" name="email"><br><br>

    <input type="submit" value="Trimite">
</form>

Script PHP pentru validare

<?php
// Inițializare variabile pentru erori și valori
$nume = $email = "";
$eroareNume = $eroareEmail = "";

// Verificăm dacă formularul a fost trimis
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Validare nume
    if (empty($_POST["nume"])) {
        $eroareNume = "Numele este obligatoriu!";
    } else {
        $nume = htmlspecialchars($_POST["nume"]);
    }

    // Validare email
    if (empty($_POST["email"])) {
        $eroareEmail = "Email-ul este obligatoriu!";
    } elseif (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
        $eroareEmail = "Email-ul nu este valid!";
    } else {
        $email = htmlspecialchars($_POST["email"]);
    }

    // Dacă nu sunt erori, afișăm datele
    if (empty($eroareNume) && empty($eroareEmail)) {
        echo "<p>Formular trimis cu succes!</p>";
        echo "<p>Nume: $nume</p>";
        echo "<p>Email: $email</p>";
    }
}
?>

Afișarea mesajelor de eroare lângă câmpuri

<form method="post" action="">
    <label for="nume">Nume:</label>
    <input type="text" id="nume" name="nume" value="<?php echo $nume; ?>">
    <span style="color:red;"><?php echo $eroareNume; ?></span><br><br>

    <label for="email">Email:</label>
    <input type="text" id="email" name="email" value="<?php echo $email; ?>">
    <span style="color:red;"><?php echo $eroareEmail; ?></span><br><br>

    <input type="submit" value="Trimite">
</form>
🔧 Exemplu PHP: Validarea simplă a unui formular în PHP
<?php
// Inițializare variabile
$nume = $email = "";
$eroareNume = $eroareEmail = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["nume"])) {
        $eroareNume = "Numele este obligatoriu!";
    } else {
        $nume = htmlspecialchars($_POST["nume"]);
    }

    if (empty($_POST["email"])) {
        $eroareEmail = "Email-ul este obligatoriu!";
    } elseif (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
        $eroareEmail = "Email-ul nu este valid!";
    } else {
        $email = htmlspecialchars($_POST["email"]);
    }

    if (empty($eroareNume) && empty($eroareEmail)) {
        echo "<p>Formular trimis cu succes!<p>";
        echo "<p>Nume: $nume<p>";
        echo "<p>Email: $email<p>";
    }
}
?>

<form method="post" action="">
    <label for="nume">Nume:</label>
    <input type="text" name="nume" value="<?php echo $nume; ?>">
    <span style="color:red;"><?php echo $eroareNume; ?></span><br><br>

    <label for="email">Email:</label>
    <input type="text" name="email" value="<?php echo $email; ?>">
    <span style="color:red;"><?php echo $eroareEmail; ?></span><br><br>

    <input type="submit" value="Trimite">
</form>

Explicație pas cu pas


🧠 Quiz - Structuri de control în PHP

Top