MySQL Java JavaScript PHP Python HTML-CSS C-sharp C++ Go

Construcția if..else și operatorul ternar

Construcțiile condiționale permit direcționarea execuției programului în funcție de o condiție pe unul dintre posibilele căi. Una dintre aceste construcții în limbajul PHP este construcția if..else

Construcția if..else

Construcția if (condiție) verifică adevărul unei condiții, și dacă aceasta este adevărată, atunci se execută blocul de instrucțiuni care urmează după if. Dacă condiția este falsă, adică este egală cu false, atunci blocul if nu se execută. De exemplu:

<?php
$a = 4;
if($a > 0) {
   echo "Variabila a este mai mare decât zero";
}
echo "<br>sfârșitul execuției programului";
?>

Blocul de instrucțiuni este delimitat de acolade. Și deoarece în acest caz condiția este adevărată (adică este egală cu true): valoarea variabilei $a este mai mare decât 0, blocul de instrucțiuni din acolade va fi executat. Dacă valoarea lui $a ar fi fost mai mică decât 0, blocul if nu s-ar fi executat.

Dacă blocul if conține doar o instrucțiune, atunci acoladele pot fi omise:

<?php
$a = 4;
if($a > 0)
   echo "Variabila a este mai mare decât zero";
echo "<br>sfârșitul execuției programului";
?>

Întreaga construcție poate fi plasată pe o singură linie:

if($a > 0) echo "Variabila a este mai mare decât zero";

În acest caz, blocul if conține doar instrucțiunea echo "Variabila a este mai mare decât zero";.

Blocul else

Blocul else conține instrucțiunile care se execută dacă condiția de după if este falsă, adică egală cu false:

<?php
$a = 4;
if($a > 0) {
   echo "Variabila a este mai mare decât zero";
} else {
   echo "Variabila a este mai mică decât zero";
}
echo "<br>sfârșitul execuției programului";
?>

Dacă $a este mai mare decât 0, se execută blocul if, altfel se execută blocul else.

Deoarece în ambele blocuri este doar o instrucțiune, se pot omite acoladele pentru definirea blocurilor:

if($a > 0)
   echo "Variabila a este mai mare decât zero";
else
   echo "Variabila a este mai mică decât zero";

Construcția elseif

Construcția elseif introduce condiții suplimentare în program:

$a = 5;
if($a > 0) {
   echo "Variabila a este mai mare decât zero";
} elseif($a < 0) {
   echo "Variabila a este mai mică decât zero";
} else {
   echo "Variabila a este egală cu zero";
}

Se pot adăuga mai multe blocuri elseif. Dacă niciuna dintre condițiile din if sau elseif nu se îndeplinește, atunci se execută blocul else.

Definirea condiției

Mai sus, ca și condiție, s-au folosit operații de comparație. Totuși, în realitate, condiția poate fi orice expresie, nu doar una care returnează true sau false. Dacă expresia transmisă este egală cu 0, aceasta este interpretată ca false. Alte valori sunt considerate true:

if (0) {}       // false
if (-0.0) {}    // false
if (-1) {}      // true
if ("") {}      // false (șir gol)
if ("a") {}     // true (șir ne-gol)
if (null) {}    // false (valoare absentă)

Sintaxa alternativă if

PHP suportă și sintaxa alternativă pentru construcția if..else, în care în loc de acoladă deschisă se folosește două puncte, iar la sfârșitul întregii construcții se folosește cuvântul cheie endif.

$a = 5;
if($a > 0):
   echo "Variabila a este mai mare decât zero";
elseif($a < 0):
   echo "Variabila a este mai mică decât zero";
else:
   echo "Variabila a este egală cu zero";
endif;

Mod combinat HTML și PHP

De asemenea, putem scrie construcția if..else în alt mod, alternând în cadrul construcției cu cod HTML:

<!DOCTYPE html>
<html>
<head>
<title>FDC.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php 
$a = 5;
?>

<?php if ($a > 0) { ?>
<h2>Variabila a este mai mare decât zero</h2>
<?php } ?>

</body>
</html>

În acest caz, condiția este indicată într-un bloc php separat: <?php if ($a > 0) { ?>. Este important că acest bloc conține doar acolada deschisă "{".

Construcția if se încheie cu alt bloc php, care conține acolada închisă: <?php } ?>.

Între aceste două blocuri php se află codul care se afișează pe pagina html, dacă condiția din if este adevărată. Acest cod reprezintă efectiv cod HTML, astfel încât aici se pot plasa diferite elemente HTML, ca în acest caz elementul <h2>.

Dacă este necesar, se pot adăuga expresii else și elseif:

<!DOCTYPE html>
<html>
<head>
<title>FDC.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
$a = -5;
?>

<?php if ($a > 0) { ?>
<h2>Variabila a este mai mare decât zero</h2>
<?php } elseif($a < 0) { ?>
<h2>Variabila a este mai mică decât zero</h2>
<?php } else { ?>
<h2>Variabila a este egală cu zero</h2>
<?php } ?>
</body>
</html>

Se poate folosi și sintaxa alternativă:

html
<!DOCTYPE html>
<html>
<head>
<title>FDC.COM</title>
<meta charset="utf-8" />
</head>
<body>
<?php
$a = 0;
?>

<?php if ($a > 0): ?>
<h2>Variabila a este mai mare decât zero</h2>
<?php elseif($a < 0): ?>
<h2>Variabila a este mai mică decât zero</h2>
<?php else: ?>
<h2>Variabila a este egală cu zero</h2>
<?php endif; ?>
</body>
</html>

Operatorul ternar

Operatorul ternar constă din trei operanzi și are următoarea definiție: [primul operand - condiție] ? [al doilea operand] : [al treilea operand]. În funcție de condiție, operatorul ternar returnează al doilea sau al treilea operand: dacă condiția este true, se returnează al doilea operand; dacă condiția este false, se returnează al treilea operand. De exemplu:

$a = 1;
$b = 2;
$z = $a < $b ? $a + $b : $a - $b;
echo $z;

Dacă valoarea variabilei $a este mai mică decât $b și condiția este adevărată, atunci variabila $z va fi egală cu $a + $b. Altfel, valoarea lui $z va fi egală cu $a - $b.