В PHP съществуват конструкции, чрез които не само да определите дали даден израз е верен или не (дали връща като резултат „истина“ или „неистина“), но и да зададете на скрипта да извърши определени операции в зависимост от върнатия резултат.

1. Условна конструкция if
Условната конструкция if се използва за проверка на истинността на даден израз и задаване на последващо действие, като синтаксисът й е:

if (израз с оператор за сравнение) {направи това}

При тази конструкция все едно казвате: „Ако е изпълнено даденото условие, тогава направи ето това“.

Забележете, че израза, в който се задава условието с оператора за сравнение, се поставя в кръгли скоби – (), а операцията, която трябва да се задейства ако е изпълнено условието, е поставена в големи скоби – {}.

Такъв вид конструкция връща като резултат булева стойност от израза в кръглите скоби, чиято истинност се проверява, т.е. върнатия резултат е „вярно“ или „невярно“. Ако резултата е „вярно“, тогава се изпълнява операцията, зададена в големите скоби {}.

Например нека да имаме следния код:

<?php

$prom1 = 100;
$prom2 = „100“;

if ($prom1 == $prom2)

{
$rezultat = „Двете променливи са с еднакви стойности“;
echo „$rezultat“;
}

?>

Горния код ще изведе на екран съобщението „Двете променливи са с еднакви стойности“, тъй като чрез скрипта ние все едно даваме следното указание: „Провери дали са равни стойностите на променливите $prom1 и $prom2 и АКО са равни изведи на екран съобщението „Двете променливи са с еднакви стойности“.

Може и да не се използва променливата $rezultat, а директно да се зададе извеждане на надписа чрез echo:

if ($prom1 == $prom2)
{echo „Двете променливи са с еднакви стойности“;}

В случая резултата от сравнението е „вярно“, тъй като двете променливи имат еднакви стойности, макар че са различни по тип.

2. Условна конструкция if-else
Резонно възниква въпроса какво ще стане ако резултата от проверката не е „истина“. Например да заменим оператора за равенство (==) с оператора за едновременно сравнение на стойност и на тип (===):

<?php

$prom1 = 100;
$prom2 = „100“;

if ($prom1 === $prom2)

{
$rezultat = „Двете променливи са с еднакви стойности“;
echo „$rezultat“;
}

?>

Този код няма да ни върне никакъв резултат, защото условието за да се покаже на екрана въведения текст не е изпълнено – запитването е дали променливите са еднакви не само по стойност, но и по тип, а по тип те се различават. Освен това ние не сме указали какво да се прави в такъв случай.

Ясно е, че в такава ситуация е нужно някакво алтернативно решение – код, който да се изпълни ако поставеното условие не е истина.

За такива случаи е предвидено да се използва конструкцията if-else, чиито синтаксис е:

if (израз с оператор за сравнение) {направи това}
else {направи друго}

Т.е. чрез тази конструкция ние все едно казваме: „Ако поставеното условие е изпълнено (връща резултат „вярно“) – направи това, но ако то не е изпълнено (връща резултат „невярно“) – тогава направи ето това (друго действие)“.

Ако резултата от проверката в израза след if е отрицателен, тогава се прескача кода заключен в големите скоби след if и се изпълнява кода в големите скоби след else. В такъв случай нашия примерен скрипт може да има вида:

<?php

$prom1 = 100;
$prom2 = „100“;

if ($prom1 === $prom2)

{
$rezultat = „Двете променливи са с еднакви стойности“;
echo „$rezultat“;
}

else
{
echo „Променливите се различават или по стойност или по тип“;
}

?>

Горния код ще върне като резултат надписа „Променливите се различават или по стойност или по тип“, тъй като резултата от проверката е отрицателен, което означава, че се прескача показването на стойността на променливата $rezultat и директно се изпълнява кода, заключен в големите скоби след else.

Забележете, че след кръглите скоби, в които е затворен израза за проверка (веднага след if), не се поставят точка и запетая, тъй като това не е край на инструкция.

3. Конструкция switch
Конструкцията switch може да спести многократното повторение на конструкция if-else. Switch има синтаксис, който позволява да се проверят множество условия едно след друго и в зависимост от върнатия резултат да се укаже изпълнение на някакво действие. Ключови думи и символи в конструкцията switch са
– думата case, с която се задава израз за проверка
– двоеточие, след което следва действие за изпълнение
– думата break, с която се прекъсва изпълнението

Switch дава възможност да се укаже и действие по подразбиране чрез думата default, което да се изпълни в случай, че нито едно от зададените условията не е изпълнено.

Например нека да имаме двете променливи от горния пример със стойности съответно 100 и „100“. Ще зададем да бъде последователно проверено:
1. дали тези променливи са равни и по стойност и по тип
2. дали са равни поне по стойност

Кода ще бъде следния:

<?php

$prom1 = 100;
$prom2 = „100“;

switch(true)
{
case $prom1 === $prom2: echo „Равни по стойност и тип“;
break;

case $prom1 == $prom2: echo „Равни поне по стойност“;
break;

default: echo „Не са равни нито по стойност нито по тип“;
}
?>

На горния скрипт му е дадена следната задача:

– aко е вярно, че променливата $prom1 е равна на променливата $prom2 и по стойност и по тип, тогава изведи съобщението „Равни по стойност и тип“ и прекъсни изпълнението (break). Ако това условие не е изпълнено продължи нататък.

– aко двете променливи не са равни и по стойност и по тип, но са равни поне по стойност, тогава изведи съобщението „Равни поне по стойност“ и прекъсни изпълнението.

– aко двете променливи не са равни нито по стойност нито по тип, тогава изведи стандартно съобщение (default) за всички случаи когато условията не са изпълнени – „Не са равни нито по стойност нито по тип“.

В този случай изведеното съобщение ще бъде „Равни поне по стойност“.

Ако например зададем на $prom1 стойност 50, тогава ще се изпълни действието по подразбиране, указано след default, което е предвидено за всички случаи, когато нито едно условие не е върнало резултат „истина“, т.е. тогава съобщението ще бъде „Не са равни нито по стойност нито по тип“ и т.н.

4. Условен (троен) оператор
Измежду операторите има един, който е подходящо да бъде представен тук, тъй като той може да замести целия блок на конструкцията if-else. Това е един от най-ползваните оператори.

Оператора се нарича „троен оператор“, тъй като едновременно извършва 3 действия:

1. Определя дали даден израз връща „истина“ или „неистина“
2. Ако връща „истина“ задава изпълнение на определено дейстие
3. Ако връща „неистина“ задава изпълнение на алтернативно действие

От описанието става ясно, че тройния оператор е нещо като по-къс вариант на конструкцията if-else. Изписва се чрез въпросителния знак (?)

Синтаксиса на тройния оператор е следния:

израз ? ако е вярно направи това : ако е невярно направи друго

където
– „израз“ е израза с оператор за сравнение, който се проверява дали ще върне резултат „вярно“ или „невярно“
– „ако е вярно направи това“ е кода, който трябва да се изпълни ако резултата е „вярно“
– „ако е невярно направи друго“ е кода, който трябва да се изпълни ако резултата е „невярно“

Ключовите моменти от синтаксиса на тройния оператор са въпросителната (знака на самия оператор), която се поставя след израза, чиято истинност ще се проверява и двоеточието, което се поставя между указанията за операцията в случай, че резултата е бил „вярно“ и указанията за операцията в случай, че резултата е бил „невярно“.

За пример ще използваме същия код от примера за конструкцията if-else:

<?php

$prom1 = 100;
$prom2 = „100“;

if ($prom1 === $prom2)

{
$rezultat = „Двете променливи са с еднакви стойности“;
echo „$rezultat“;
}

else
{
echo „Променливите се различават или по стойност или по тип“;
}

?>

Ако трябва да получим същия резултат, но чрез използване на тройния оператор, тогава трябва да напишем кода:

<?php

$prom1 = 100;
$prom2 = „100“;

$rezultat = $prom1 === $prom2 ?

„Двете променливи са с еднакви стойности“ :
„Променливите се различават или по стойност или по тип“;

echo „$rezultat“;

?>

В случая извършваме проверка за истинност на израза $prom1 === $prom2, т.е. дали е вярно, че двете променливи са еднакви и по стойност и по тип, задаваме две възможности – при резултат „вярно“ и при резултат „невярно“ и едновременно с това присвояваме тези възможности на променливата $rezultat. По този начин променливата $rezultat приема някоя от двете стойности в зависимост от това дали резултата е true или false. Накрая чрез echo показваме резултата.

Аналогичен резултат ще ни даде и кода:

<?php

$prom1 = 100;
$prom2 = „100“;

echo $prom1 === $prom2 ?

„Двете променливи са с еднакви стойности“ :
„Променливите се различават или по стойност или по тип“;

?>

Тук имаме само сравнение между $prom1 и $prom2, задаване на съответните операции при резултат „истина“ и „неистина“ и извеждане на резултата на екран чрез echo, без стойностите да се присвояват на трета променлива.