Управляващи структури (Част 1)

Какво са управляващите структури? Това са условните оператори, циклите и блоковете. Управляващите структури са основата на езиците за програмиране. Те позволяват да се зададат параметри и след това, в зависимост от техните значения, да се изпълни едно или друго действие. Благодарение на това уеб сайтовете стават по-динамични. Например, до обяд поздравът към потребителите може да е “Добро утро!”, а след обяд- “Добър ден!”.

В РНР има два основни условни оператора: if и switch. Двете основни категории оператори са операторите за сравнение и логическите оператори. Те обикновено се използват в условните оператори. Циклите позволяват повтарянето на едни и същи действия няколко пъти. Те икономисват време, особено при работа с масиви. В РНР се поддържат два типа цикли: while (и неговия еквивалент do...while) и for.

Условен оператор if


Синтаксисът на условния оператор if, е следния:

if (условие){
инструкцията, която ще се изпълни, ако условието е истина (true);

}



Условието задължително се поставя в скоби и се пресмята до булевата си стойност. Ако условието е истина (TRUE), РНР изпълнява инструкцията , ако условието е лъжа (FALSE), инструкцията не се изпълнява. Всяка инструкция завършва задължително с точка и запетая. Няма ограничения за количеството инструкции, които могат да се включат, както и за вложените блокове и оператори. Обикновено програмистите разполагат тези инструкции с отстъп спрямо условния оператор if, показвайки по този начин, че дадения блок се изпълнява при определено условие. Ако изразът не се постави в скоби или пропуснете точката и запетаята след инструкцията, програмата ще изведе съобщение за грешка.

Да разгледаме следния пример:
  1. Отворете текстовия редактор и създайте файл с име if_construct_1.php.
  2. Въведете следния скрипт:
    <!Doctype html> 
    <html> 
    <head> 
    <title>Конструкцията if</title> 
    <meta http-equiv="Content-Type" content="text/html"; 
    charset="UTF-8"> 
    </head> 
    <body> 
    <?php
     
    $my_name = "Edelw"; //Задава стойност на променливата
    
    if ($my_name == "Edelw") { //Проверка та условието
            //Инструкция, която се изпълнява, ако условието е TRUE
            echo "Вашето име е Edelw!<br />"; 
    } 
    echo "Добре дошли в началната страница!"; 
    ?> 
    </body> 
    </html>
    
  3. Съхранете файла и тествайте в браузъра.
В браузъра ще видите следното:

if_construct_1.png

Какво прави скрипта?

  • Задаваме стойност на променливата $my_name = "Edelw".
  • С помощта на условният оператор if и оператора ==, проверяваме дали стойността на променливата $my_name съвпада с "Edelw".
  • Стойността на променливата $my_name действително е "Edelw", така че условието е вярно и се изпълнява инструкцията да се изведе съобщението “Вашето име е Edelw!” .

Какво ще се случи, ако условието не е изпълнено?
Променете името на променливата $my_name= “noEdelw”. Съхранете файла и тествайте в браузъра. Резултатът ще е:

if_construct_2.png

Тъй като в този случай условието $my_name == "Edelw" не е изпълнено, се извежда само съобщението, което е извън обхвата на условния оператор if, т.е. "Добре дошли в началната страница!".
За да определим дали дадена променлива съществува, можем да използваме функцията isset ().

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

Понякога се налага да изпълните една инструкция, ако условието е изпълнено, и друга, ако не е. В тези случаи на помощ идва конструкцията else, която се явява един вид разширение на условния оператор if. Синтаксисът е следния:

if (условие) {
инструкция, която се изпълнява, ако условието е TRUE;

} else {

инструкция, която се изпълнява, ако условието е FALSE;

}

Можем да преработим файла if_condition.php така:

  1. Отворете текстовия редактор.
  2. Създайте файл с име if_else.php.
  3. Въведете следния скрипт:
    <!Doctype html> 
    <html> 
    <head> 
    <title>Конструкцията if-else</title> 
    <meta http-equiv="Content-Type" content="text/html"; 
    charset="UTF-8"> 
    </head> 
    <body> 
    <?php 
    $my_name = "Edelw"; 
    
    if ($my_name == "Edelw") { 
     echo "Вашето име е Edelw!<br />"; 
            echo "Добре дошли в началната страница!"; 
    } 
    else { 
            echo "Добре дошли в началната страница!"; 
    } 
    ?> 
    </body> 
    </html>
    
  4. Тествайте в браузъра, когато на променливата $my_name е зададена стойност"Edelw" и когато зададената стойност е различна от "Edelw”.

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

elseif също е един вид разширение към конструкцията if. Работи точно както if, като добавя проверка на още едно условие и по този начин може блокът с инструкции да се разшири.

if (условие 1) {
инструкция, която се изпълнява, ако условие 1 е TRUE;

} elseif (условие 2) {

инструкция, която се изпълнява, ако условие 2 е TRUE;

} else {

инструкция, която се изпълнява, ако условия 1 и 2 са FALSE;


  1. Създайте нов документ.
  2. Дайте му наименование if_elseif.php.
  3. Въведете слeдния скрипт:
    <!Doctype html> 
    <html> 
    <head> 
    <title>Конструкцията if-elseif</title> 
    <meta http-equiv="Content-Type" content="text/html"; 
    charset="UTF-8"> 
    </head> 
    <body> 
    <?php 
    
    ?> 
    </body> 
    </html>
    

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

//Задава стойност на променливата $firstname
$firstname = "Edelw";

//Извежда съобщение за часа, минутите и секундите
//и дава информация дали е преди обяд (AM)
//или след обяд (PM)
echo "Часът е" . " " . date ("H:m:s") .
 " " . date("A") . "<br/><br/>";

//Проверява дали е въведено името
if ($firstname == ""){
    
        echo "Влезте в акаунта си, моля!"."\n"; 
 }
else{

Функцията date() извежда произволна конкретна информация за датата (ден от седмицата, месец и т.н.), изхождайки от получения параметър. В случая date("А") връща "AM", ако е преди обед и “РМ”, ако е след обяд.

if( date("H:m:s") < 12) {
  
//Ако е сутрин, поздрава ще е “Добро утро" 
echo (" Добро утро,". " ".$firstname . "!" ); 
   }
} 

Тук date(“H”) връща времевия промеждутък във формат АМ/РМ , поради което между обяд и 18:00, приветствието ще е “Добър ден!”.

elseif ((date("H:m:s") >= 12 ) and (date ("H") < 18 )) {
  
//Ако е между 12:00 и 18:00, поздравът ще е "Добър ден" 
 echo ("Добър ден,". " ". $firstname . "!") ; 
    }
    
        else { 
        //След 18 часа, поздрава ще е "Добър вечер" 
        echo ("Добър вечер,". " ". $firstname . "!") ;
  
} 

Съдържанието на целия файл if_elseif.php:

<!Doctype html> 
<html> 
<head> 
<title>Конструкцията if- elseif</title> 
<meta http-equiv="Content-Type" content="text/html"; 
charset="UTF-8"> 
</head> 
<body>  
<?php

//Задава стойност на променливата $firstname
$firstname = "Edelw";

//Извежда съобщение за часа, минутите и секундите
//и дава информация дали е преди обяд (AM)
//или след обяд (PM)
echo "Часът е" . " " . date ("H:m:s") . " " 
. date("A") . "<br/><br/>";

//Проверява дали е въведено името
if ($firstname == ""){
    
     echo "Влезте в акаунта си, моля!"."\n"; 
 }
else{

     if( date("H:m:s") < 12) {
  
 //Ако е сутрин, поздрава ще е “Добро утро" 
 echo (" Добро утро,". " ".$firstname . "!" ); 
 }
           
 elseif ((date("H:m:s") >= 12 ) and (date ("H") < 18 )) {
  
 //Ако е между 12:00 и 18:00, поздравът ще е "Добър ден" 
 echo ("Добър ден,". " ". $firstname . "!") ; 
 }
    
        else { 
        //След 18 часа, поздрава ще е "Добър вечер" 
        echo ("Добър вечер,". " ". $firstname . "!") ;
  
} 
}
?> 
</body> 
</html>

Съхранете файла и тествайте веднъж, ако е зададена стойност на променливата $firstname и втори път, ако не е.

Функцията date() е много полезна, но тя взема времето от сървъра, а не от мястото, където се намира потребителя, имайте го пред вид.

if_elseif_1.png

if_elseif_2.png

if_elseif_3.png

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

Ако ви се струва, че изразите ви if - elseif – else стават все по-сложни, е време да се запознаем с оператора switch. Той ще ни помогне да спестим време и да опростим програмирането. конструкцията switch проверява за съвпадение на стойността на променливата с някой от няколко предложени израза. При съвпадение се изпълнява следващия оператор.
Синтаксисът й е следния:

switch ($variable) {
 
 case "value 1":
 statement 1; 
 break; 

 case "value 2":
 statement 2;
 break; 

 default: 
 statement 3; 
 break; 
}

Важно е да разберете как работи конструкцията switch. Започва последователно сравнение на стойностите на променливата с дадените варианти и когато се намери пълно съответствие, се изпълнява следващата след двуеточието инструкция, т.е. когато се срещне case (случай) със стойност, която съвпада със стойността на променливата $variable, РНР започва да изпълнява съответните инструкции. Инструкциите се изпълняват, докато не се достигне края на блока или докато не се срещне инструкция break в края на списъка с инструкции case. Специален е случаят default, който в същност е всичко, което го няма в другите случаи. Много е важно всеки случай да завършва с инструкцията break.

Да си представим, че искаме да отидем на екскурзия. Имаме избор (отделни случаи) на няколко дестинации: Египет, Азия, Африка, Северна Америка, Южна Америка, Австралия. Ние ще си изберем дестинацията, например Австралия. Тогава нашата променлива $variable ще е Австралия, а конструкцията switch ще има вида:

$variable = “Австралия”;
 switch ($variable) {
 
 case "Египет": 
 echo “Приятно изкарване в Египет!”; 
 break;
 
 case "Азия":
 echo “Приятно изкарване в Азия!”; 
 break; 

 case "Африка": 
 echo “Приятно изкарване в Африка!”; 
 break; 

 case "Северна Америка": 
 echo “Приятно изкарване в Северна Америка!”; 
 break; 

 case "Южна Америка": 
 echo “Приятно изкарване в Южна Америка!”; 
 break; 

 case "Австралия": 
 echo “Приятно изкарване в Австралия!”; 
 break; 

 default: 
 echo “Е, ще отидете може би следващата година!”; 
 break; 
}
  1. Създайте нов документ в текстовия редактор.
  2. Дайте му наименование switch.php.
  3. Въведете следния скрипт:
    <!Doctype html> 
    <html> 
    <head> 
    <title>Конструкцията switch</title> 
    <meta http-equiv="Content-Type" content="text/html"; 
    charset="UTF-8"> 
    </head> 
    <body>
    <?php 
    $variable = "Австралия"; 
     switch ($variable) { 
     case "Египет": 
     echo "Приятно изкарване в Египет". "!"; 
     break; 
     case "Азия": 
     echo "Приятно изкарване в Азия" ."!"; 
     break; 
     case "Африка": 
     echo "Приятно изкарване в Африка" . "!"; 
     break; 
     case "Северна Америка": 
     echo "Приятно изкарване в Северна Америка" . "!"; 
     break; 
     case "Южна Америка": 
     echo "Приятно изкарване в Южна Америка" . "!"; 
     break; 
     case "Австралия": 
     echo "Приятно изкарване в Австралия" . "!"; 
     break; 
     default: 
     echo "Е, ще отидете може би следващата година" . "!"; 
     break; 
    } 
    ?> 
    </body> 
    </html>
    
  4. Съхранете файла.
  5. Тествайте в браузъра.

В браузъра ще видите:

switch.png

sign.png

Няма коментари:

Публикуване на коментар