Условните оператори ни дават възможност да разклоним логиката на нашето приложение в зависимост от това дали дадено условие е изпълнено. Пример:
Имате сайт, в който потребителят трябва да влезе с име и парола. В зависимост от това дали потребителят е влязъл в системата той трябва да има или да няма достъп до даден ресурс. Тоест ние трябва да имаме възможност някъде в кода да проверим дали този човек се е вписал в системата и в зависимост от това ние да му покажем даден ресурс.
Ако нещо е вярно, става дадено друго нещо. Ако не е вярно, тогава става нещо друго.
Операторът If
В първия пример ще разгледаме оператора if с този прост пример:
<?php
$a=true;
if($a==true){
echo "asjkdhkjashdhsa";
}
?>
В този пример имаме проверката дали булевата стойност на променливата а наистина е true. Ако $a е true в браузъра ще видите текста:
asjkdhkjashdhsa
Нека променим малко кода:
<?php
$a=false;
if($a==true){
echo "asjkdhkjashdhsa";
}
?>
Заменихме булевата стойност на променливата $a и сложихме false. Сега при изпълнението на кода няма да се вижда нищо, защото условието за показване на текста asjkdhkjashdhsa не е изпълнено. Тоест, за да се покаже текстът asjkdhkjashdhsa, трябва променливата $a задължително да бъде с булева стойност true.
Разликата между = и == в програмирането с PHP
Може би ви направи впечатление, че в двата примера използвахме = и ==. Между тях има разлика. В PHP = се използва за присвояване на стойност, а == се използва за сравнение и проверка. Пример:
$test=1; //тук присвоихме стойност 1 на променливата $test;
$tes2t==334;//тук правим сравнение/проверка дали стойността на $test2 е 334;
Каква е логиката на условния оператор If
Да го обясним със следния пример:
<?php
$a=1;
if($a==1)//имаме ключова дума if, която ни казва, че това ще бъде условен оператор и скоби, в които се извършва самото сравнение. Ако проверката в скобите има булева стойност true, тоест дадено условие е изпълнено, тогава ще се изпълни кодът в скобите по-долу.
{
echo "a ima stoinost 1";
}
?>
Още един пример за условния оператор:
<?php
$a=false;
if($a==true){
echo "a ima stoinost 1";
}
echo 'test';
?>
Изпробвайте го и вижте какво ще стане. Ще се визуализира само текста test. Това етака, защото PHP вижда, че условието за изпълнението на кода между скобите не е изпълнено. Поради това този код не се изпълнява и PHP го игнорира, и продължава изпълнението на другите неща във файла. Но, ако условието е вярно, ще бъдат визуализирани и двата резултата, тоест така:
<?php
$a=true;
if($a==true){
echo "a ima stoinost 1";
}
echo 'test';
?>
Тоест в браузъра ще получите това: a ima stoinost 1test; Можете да сложите и един празен ред, за да изглежда по-прегледно:
<?php
$a=true;
if($a==true){
echo "a ima stoinost 1";
}
echo "<br/>";
echo 'test';
?>
В самите скоби () не винаги е необходимо да извършваме сравнение. В скобите трябва да имаме операция, която връща булев резултат (true или false), но ние можем да си спестим време, ако използваме следния синтаксис:
<?php
$a=true;
if($a){
echo "a ima stoinost 1";
}
echo "<br/>";
echo 'test';
?>
Разликата с предишния код е това нещо: if($a) . В този пример if операторът ще вземе променливата $а и ще се опита да я прехвърли към булева стойност, която ще се изпълни, ако тази стойност е true. Вижте какво ще стане, ако направим малка промяна по кода в стойността на променливата $a:
<?php
$a=0;
if($a){
echo "a ima stoinost 1";
}
echo "<br/>";
echo 'test';
?>
Кодът в скобите няма да се изпълни, защото условието не е изпълнено - $a има стойност, която е 0, а нулата винаги дава false.
Допълнително разклоняване на логиката на приложението ни с помощта на if else
Ето как става това на практика:
<?php
$a=0;
if($a){
echo "tekst1";
}
else{
echo "tekst2";
}
?>
Имаме две възможности между скобите, всяка от които се изпълнява, ако условието е изпълнено. В случая, ако променливата $a е с булева стойност true, ще се покаже tekst1, но ако това не е така, тогава ще се покаже tekst2.
Това ни дава изключително голяма гъвкавост при изпълняване на приложения, но обърнете внимание, че при конструкцията if else винаги ще се изпълни едното условие, а не и двете, само едното! Няма начин да се изпълнят двете условия едновременно.
Обърнете внимание, че if може да съществува самостоятелно, но не и else.
Проверка на повече от едно условие с elseif()
<?php
$a=1;
if($a==1)
{
echo "stoinostta e edno";
}
elseif($a==2)
{
echo "stoinostta e dve";
}
elseif($a==3)
{
echo "stoinostta e tri";
}
?>
Присвояване на променливата $a стойност 1 и правим проверка дали тази стойност е 1. Ако тази стойност е 1, се изпълнява stoinostta e edno, което става в случая.
Изпробвайте сами кода като поставите на мястото на единицата на първия ред числата 2 и 3. Вижте какво ще стане.
Обърнете внимание, че elseif() не може да съществува без if. Трябва да имаме поне един if, за да го използваме.