Обучение в PHP - част 4 (Условни изрази)
Условни изрази

Условните изрази се състоят от три компоненти

Операнди - Могат да се числа, текст или смесени. Текстът трябва да е заграден с кавички, преди да се изчисли стойността на израза.
Логичестки връзки - Те опеределят, дали всички, или само едно от условията трябва да върне стойност True, за да се изпълни кода.
Оператори - Те се използват за извършване на изчисления и за сравняване на изрази[/list]

Условни конструкции

Понякога ви се налага да сравните дадено условие и на базата на резултата, върнат от условие, да извършите определено действие. Можете да използвате условните конструкции за тази цел. В условните конструкции първо се оценява даден израз на базата на това дали условието е върнало стойност True или False, и се изпълнява определен код. В PHP някой от най-често използваните условни конструкции са:

if ... else ... elseif
switch ... case


Сега да разгледаме в подробности тези конструкции.

Конструкцията if

Конструкцията if се използва за оценяване на израз и връщане на булева стойност. Булевите стойности са True и False. Ако условието върне True, се изпълняват операторите, следващи условието. В противен случай се изпълнява първия ред след блока IF. Ето го и синтаксиса на конструкцията if:

if (израз)
оператор1;


В горния пример изразът се оценява и при върната стойност True се изпълнява оператор1 . В противен случай операторът не се изпълнява. Можете обаче да напишите горния оператор по следния начин

if (израз)
{
оператор1;
}


Ето и няколко примера за използване на конструкцията if:

<?php
$Myvalue = 5;
if ($Myvalue = = 5 )
{
echo "Моята първа програмка";
// Този код ще се изпълни, само ако стойността $Myvalue е равна на 5
}
?>


В горната програма на променливата $Myvalue се задава стойност 5 и след това се проверява дали тойността на променливата $Myvalue е равна на 5. Тъй като условието връща стойност True, текстът се отпечатва на екрана.

<?php
$Myvalue = 5;
if (!($Myvalue = = 4))
{
echo "Погледни, 'Myvalue' не може да е равна на 4 !";
// Горния ред ще се отпечатва, когато $Myvalue не е равно на 4
}
?>


В горната програма на променливата $Myvalue се задава стойност 5 и след това се визуализира на екрана, тъй като стойността на променливата не е равна на 4. Можете да използвате оператора за логическо отрицание (!), за да укажете, че операторите, трябва да се изпълняват, само когато условието върне стойност False. В случая на оператора (!), ако изразът върне стойност True, цялото условие връща стойност False, ако изразът върне стойност False, цялото условие връща стойност True. Да разгледаме друг пример.

<?php
If (TRUE)
{
echo "I will always run.";
// Този ред ще се изпълнява винаги
}
?>


Можете да оценявате множество условия в една конструкция if, Като използвате оператори. В зависимост от това какъв оператор сте използвали, можете да изпълните операторите, ако всички , или само едно от условията са удолетворени. Следват няколко примера, които използват оператори за уценяване на множество условия.

<?php
$varA = 5;
$VarB = 6;
if (($VarA = = 5) && ($VarB = = 6))
{
echo "Текстът се показва, само ако стойностите на променливите 'VarА' е 5 и 'VarB' е 6";
}
?>


В горния пример променливите $VarА и $VarB имат съответно стойности 5 и 6. Условието се проверява и само ако условието върне стойност True, текстът ще се покаже на екрана. Ето и друг пример, където се изчисляват множество условия:

<?php
$Num1 = 5;
$Num2 = 6;
$Num3 = 7;
$Num4 = 10;
$Num5 = 12;
$Num6 = 14;
if (( (($Num1 + $Num2) = = 11) && (($Num3 + $Num4) = = 17) | | ($Num5 + $Num6 ) < 50 ))
{
echo " ОК. Ако видите този текст, това означава, че сумата на променливите 'Num1' и 'Num2' е равна на 11, и сумата на променливите 'Num3' и 'Num4' е равна на 17";
echo " ИЛИ сумата на променливите 'Num5' и 'Num6' е по-малка от 50.";
}
?>


В горния пример се оценяват две главни условия. Първото условие се състой от две подусловия. Първото условия връща стойност True, ако и двете подусловия върнат стойност True. Това означава, че сумата на $Num1 и $Num2 трябва да е 11 и сумата на $Num3 и $Num4 трябва да е 17. Второто условие ще върне стойност True, ако сумата на $Num5 и $Num6 е бо-малка от 50. Ако някое от условията върне стойност True , операторите в блока if ще се изпълнят. Сега да разгледаме как да разширим изоплзването на конструкцията if, ако добавим към нея клаузата else.

Клаузата else

Да разгледаме случая, когато искате да изпълните даден код, когато условието има стойност True. Ако същото условие има стойност False, трябва да се изпълнят други оператори. В този случай е удобно да се използва клаузата else. Трябва да имате предвид някои факти за клаузата else.

Клаузата else, може да се използва само в комбинация с конструкцията if.
Кодът в клаузата else се изпълнява ,само ако условието в конструкцията if върне стойност False.
Можете да имате само една клауза else и трябва да бъде на последно място в кода на блока.


Следващия пример показва използването на клаузата else

<?php
$age = 19;
if ($age < 18)
{
echo "Не сте пълнолетен, годините ви са по-малко от 18";
// Горния ред няма да бъде отпечатан
}
else
{
echo "Пълнолетен сте, годините ви са повече от 18";
}
?>


В горния код на променливата $age се задава стойност 19 и програмата проверява дали стойността и е по=малка от 18. Тъй като условието връща стойност False, се изпълнява кодът в клаузата else. На екранът се появява текстът "Пълнолетен сте, годините ви са повече от 18".

Клаузата else if

Клаузата else if се използва заедно с конструкциите if и else.Можете да имате множество клаузи else if ведна конструкция if, обаче може да има само една клауза else. Клаузата else if се изпълнява само когато конструкцията if и на всаички други клаузи else if са върнали стойност False.

Всички клаузи else if трябва да са декларирани след конструкцията if и преди клаузата else на конструкцията.

Например:

<?php
$Num = 50;
if (($Num > 9 ) && ($Num < 100))
{
echo $Num, "e двуцифрено число";
}
elseif ($Num >= 100)
{
echo $Num, "Има три или повече цифри";
}
else
{
echo $Num, "е едноцифрено число";
}
?>


В горния пример на променливата $Num се присвоява стойност 50 и се проверяват различни условия. Ако стойността на $Num е между 9 и 100, се извежда съобщението "$Num, e двуцифрено число". Ако стойността е по-голяма от 100, се извежда съобщението $Num, има три или повече цифри". В противен случай съобщението е "$Num, e едноцифрено число".

Както отбелязахме по-рано можете да имате само една клауза else в конструкцията if. Обаче можете да имате множество клаузи else if в една конструкция if. Това е показано в следващия пример>

<?php
$Num = 50;
if (($Num > 9 ) && ($Num < 100))
{
echo $Num, "e двуцифрено число";
}
elseif (($Num > 99) && ($Num < 1000 )
{
echo $Num, "е трицифрено число";
}
elseif (($Num > 9999) && ($Num < 10000))
{
echo $Num, "е четирицифрено число";
}
elseif ($Num >= 10000)
{
echo $Num, "Има пет или повече цифри";
}
else
{
echo $Num, "е едноцифрено число";
}
?>


[Конструкцията switch

Когато се използва конструкцията if, условията се оцяняват от конструкциите if и else if. Когато обаче се използва конструкцията switch, условието се оцянява само веднъж и след това условието се сравнява със списък от предварително зададени стойности. Всяка стойност се съхранява в клаузата case. Когато се открие съответна стойност, се изпълняват командите от съответната клауза case и всички редове след нея. Ако не се открие съвпадаща стоност, тогава се изпълняват командите от клаузата default до края на конструкцията или до оператора break.

Ето го и синтаксисът на конструкцията switch.

switch (променлива)
{
case стойност 1;
оператор;
оператор;
case стойност 2;
оператор;
оператор;
.......
default;
оператор;
оператор;
}



Изразите зададени в клаузите case, трябва да са от тип integer, string или float.

Ето и пример за използване на конструкцията switch

<?php

$val = "first";
switch ( $val )
{
case "first": echo "Първи случай.";
case "second": echo "Втори случай.";
case "third": echo "Трети случай.";
case "fourth": echo "Четвърти случай.";
break;
}

?>


В горния пример ако стойността на променливата $val e fourth, ще се изпълни последни израз. Обаче ако стойността е first, ще се изпълняват всички команди от всички клаузи case. За да се избегне това трябва да поставите оператора break в края на всяка клауза case. Оператора break продължава изпълнението на програмата след конструкцията switch. Можете да препишете горния код по следния начин:

<?php

$val = "first";
switch ( $val )
{
case "first": echo "Първи случай.";
break;

case "second": echo "Втори случай.";
break;

case "third": echo "Трети случай.";
break;

case "fourth": echo "Четвърти случай.";
break;
}

?>


Условни цикли

Условните цикли се използват за изпълнение на множество от команди, докато дадено условие има стойност True. За да е сигурно, че цикълът ще се изпълнява правилно, стойността, която се проверява, трябва да се променя при всяко изпълнение на цикъла.

Налични условни цикли са :

for
while
while ... endwhile
do ... while
foreach


Цикълът for

Цикълът for е цикъл, в който броят на изпълненията на цикъла е фиксиран и броят се включва в самия израз. Цикълът for оценява три различни израза, които представляват различните нива в цикъла.

Инициализация на променливите. В израз1 присвоявате стойността на променливата. Присвоената стойност е начална точкая на цикъла.
Oценяване на условието. Условния израз ( израз2) се оценяв в началото на всяка интерация на цикъла. Ако условието има стойност True, операторите във вътрешността на цикъла се изпълняват. Ако условието има стойност False, изпълнението на цикъла приключва и програмата излиза от цикъла.
Реинициализация на променливите след итерация. края на всеки цикъл се оценява израз3, или по-точно се изпълнява. Израз израз3 не е условен израз и обикновено включва увеличаване на стойността на променливите, използвани в кода.


Синтаксисът на цикъла for е следния:

for (израз1;израз2;израз3) оператор1, оператор2;

Тъй като всички инструкции са на един ред, е по-лесно да се проследи и разбере изпълнението на кода в цикъла.
Можете да имате само един оператор в цикъла for. Но е за предпочитане всеки оператор да е на отделен ред. Това прави кода по-гъвкав. Можете да напишете горния синтаксис по следния начин.

for (израз1;израз2;израз3)
{
оператор1;
оператор2;
}


Втория синтаксис е за предпочитане, защото е по-гъвкав и можете да изпълнявате множество оператори в една интеренция. Кокато кодът се изпълнява всички оператори, намиращи се в скобите, се изпълняват и след това се увеличава стойността на променливата и се оценява условието. Да разгледаме няколко примера за използаването на цикъла for.

<?php

for ($Myval = 1; $Myval <= 10; $Myval++)
{
echo $Myval ;
}

?>


Не е задължително да имате стойностти във всички изрази на цикъла for. Можете да оставите празен който и да е от изразите или всички в цикъла for. Това прави цикъла for, много гъвкав и един от най-популярните цикли в PHP.

Например:

<?php

echo "Цикъл 1";
$Myval = 1;
for ( ; $Myval <= 10; $Myval ++)
{
echo $Myval ;
}


echo " Цикъл 2";
$Myval = 1;
for ( ; $Myval <= 10; )
{
echo $Myval ;
$Myval ++;
}


echo " Цикъл 3";
$Myval = 1;
for ( ; ; )
{
if ($Nyval > 10) {break;}
echo $Myval ;
$Myval ++;
}

?>


Както може би сте забелязали, първият цикъл има само два параметъра, вторият - само един, а третият няма нито един параметър. Независимо от това, трите цикъла извеждат един и същ резултат.

Цикълът for изпълнява код опеределен брой пъти. Да предположим, че не знаете колко пъти трябва да се изпълни кода, или кода трябва да се изпълнява, докато дадено условие върне стойност False. В такива случаи, можете да използвате цикъла while

Цикълът while

Цикълът while се използва, за да се провери дали дадено условие има стойност True или False. Операторите в цикъла while се изпълняват, докато условието има стойност True. От друга страна, цикълът може да не се изпълни нито веднъж. Това е така, защото цикъла while проверява израза, преди да започне изпълнението на командите в цикъла. това означава, че ако условието е False, няма да се влезе в цикъла while нито веднъж. Синтаксисът на цикъла е следния

while (израз) оператор;
или
while (израз)
{
оператор1;
опеартор2;
}


Ето и няколко примера за използването на цикъла while

<?php

$Num = 5;
while ($Num)
{
echo "Ще се печата безкрайно!!!";
// Това е така, тъй като променливата $Num не променя стойността си в цикъла.
}

?>


<?php

$Num = 5;
while ($Num < 10)
{
echo "Ще се печата безкрайно!!!";
// Това е така, тъй като променливата $Num не променя стойността си в цикъла.
}

?>


<?php

$Num = 5;
while ($Num < 10)
{
echo "Ще се печата докато стойността на 'Num' е по-малка от 10.!!!";
++$Num;
}
echo "Готово! Вече сме извъб цикъла и стойността на 'Num' е ,$Num";

?>


Цикълът while подържа всички валидни изрази, включително и тези, съдържащи оператори. Можете да използвате операторите && и ||, за да проверявате за две условия. В случая на оператора && и двете условия трябва да върнат стойност True. Цикълът ще свърши, когато едно от условията, върне стойност False. В случая на оператора || кода ще се изпълнява, докато поне едно от условията има стойност True

Например:

]<?php

$Num1 = 1;
$Num2 = 35;
echo "Цикълът спира изпълнението си, ако променливата 'Num1' е поюголяма или равна на 15
или ако променлиата 'Num1' е по-малка или равна на 18";

while (($Num1 < 15) && ($Num2 > 1Cool
{
++$Num1;
--$Num2;
echo " Променливата 'Num1' = ", $Num1," а променливата 'Num2' = ", $Num2,"";
// Цикълът ще свърши, дори ако само едно от условията върне стойност False.
}
echo " Извън цикъла сме.";

?>


В горния пример цикъла while ще продължи, докато $Num1 стане по-голямо или равно на 15 или $Num2 стане по-малко или равно на 18. Сега нека да разгледаме цикъла while ... end while.

Цикълът while ... end while

Цикъла while ... end while много прилича на цикъла while. Единствената разлика, е че при цикъла while използвате разделители за да маркирате операторите в цикъла. При цикъла while ... endwhile, всички оператори след while (израз) и преди endwhile се считат за оператори от цикъла, и се изпълняват при всяка итерация. Синтаксисът на цикъла while ... end while е следният:

while (израз):
оператое1;
оператое2;
endwile,


Например:

<?php

$Num1 = 1;
while ($Num1 <= 10):
echo $Num1;
$Num1++;
endwhile;

?>


В горния пример, цикъла while ще се изпълнява, докато стийността на променливата $Num1 е по-малка или равна на 10. В момента в който $Num1 стане по-голяма от 10, програмата продължава изпълнението си от реда след цикъла. Третия цикъл от серията while e do ... while, при който кода в цикъла се изпълнява поне веднъж

Цикълът do ... while

Цикълът do ... while също е сходен с цикъла while, при него обаче, кодът се изпълнява преди да се оцени условието. Всички оператори след do и преди while (израз) се считат за част от израза и трябва да ги поставите в скоби. Синтаксисът на цикъла do ... while e следният:

do
{
оператор1;
оператор2;
}
while (израз);


Както може би сте забелязали, при цикъла do ... while израза се изчислява в края на цикъла. Това означава, че дори ако условието е има стойност False, кодът в цикъла ще се изпълни поне веднъж.

Например:

<?php
$Num = 1;
do
{
echo "Нека да увеличим стойността на променливата 'Num' за да излезем от цикъла !";
++$Num;
}
while ($Num < 20);
echo " Извън цикъла сме !";

?>


Горния код ще се изпълни 20 пъти, тъй като началната стойност на $Num е 1. Обаче, ако инициализираме $Num с 21, кодът ще се изпълни, въпреки че условието има стойност False. Това е така, защото кодът се изпълнява в началото на цилъла, а условието се изпълнява в неговия край.

Цикълът foreach

В случая на цикъла foreach, множество команди се изпълняват върху множество елементи на масив или обект.. Всеки елемент на масив се оценява отделно и цикълът приключва, когато всички елементи от масива са оценени. Синтаксиса на цикъла foreach е следният:

foreach (масив as $currval) оператор;

или

foreach (масив as $sourceval => $currval) оператор;

В първия синтаксис, всички елементи от масива се обхождат и тогава променливата се увеличава преди следващата интерация Във втория случай текущата стойност на променливата се съхранява в друга променлива $sourceval, преди да се увеличи $currval.

Да разгледаме няколко примера за използването на цикъла foreach:

Пример 1:

<?php

$arrayval = array (12, 22, 32, 72);
foreach ($arrayval as $currval)
{
echo "Текущата стойност в масива \$ arrayval:$cyrrval";
}

?>


Пример 2:

<?php

$arrayval = array (Jack, Tom, Marry, James);
$count = 0;
foreach ($arrayval as $currval)
{
echo "$arrayval [$count] => $cyrrval";
}

?>


Пример 3:

<?php

$arrayval = array (
"Sunday " => 1,
"Monday " => 2,
"Tuestday " => 3,
"Wednsday " => 4,
"Thursday " => 5,
"Friday " => 6,
"Saturday " => 7,
);
foreach ($arrayval as $temval => $currval)
{
echo "$arrayval[$temval] => $cyrrval";
}

?>


/ Трябва да сте регистриран за да напишете коментар /