Веб-мастерская Ларисы ВоронинойПереключатель Switch PHP.
WEB-мастерская Ларисы Ворониной logo

Переключатель Switch PHP. Ноя 21 2016


Оператор switch  по своей логике очень напоминает конструкцию if else. Но оператор switch более удобен, когда существует несколько вариантов событий для одной переменной.

Ну, например, у нас есть переменная «друг», и в зависимости от значения этой переменной, у нас возникает несколько вариантов приветствий:

Если ты Вася – Привет Вась, проходи!;

Если ты Петя – Здорово, Петюня, давай к нам!;

Если ты Маша – Добро пожаловать, Машенька! ;

И т.д.

В прошлом уроке мы рассматривали с вами  простейший  сценарий  авторизации с помощью конструкции if else. Напомню код нашего сценария, немного приукрасив его:

<!DOCTYPE html>
<html>
     <head>
          <meta charset="utf-8">
          <title>Простая авторизация</title>
     </head>
     <body>
          <h1>Заходи в наш клуб!!!</h1>
          <form action="" method="POST">
               <p>Как тебя зовут? <input type="text" name="name"></p>
               <p><input type="submit" name="submit" value="Войти"></p>
          </form>
     </body>
</html>
<?php
$name = $_POST['name'];
 if($name =="Вася"){
     echo "Ну здравствуй"." ".$name.", "."проходи!";
}
elseif ($name =="Петя"){
     echo 'Здарово Петюнь, давай к нам!';
}
elseif ($name =="Маша"){
     echo 'Добро пожаловать, Машенька!';
}
else {
     if ($name=$_POST['name']){
         echo 'А мы тебя,'.' '.$name.', '. 'не знаем!';
     }
}
?>

В этом уроке мы рассмотрим этот же сценарий, только используем переключатель switch.

<html>
     <head>
          <meta charset="utf-8">
          <title>Switch</title>
     </head>
     <body>
          <h1>Заходи в наш клуб!!!</h1>
          <form action="" method="POST">
               <p>Как тебя зовут? <input type="text" name="name"></p>
               <p><input type="submit" name="submit" value="Войти"></p>
          </form>
<?php
$name=$_POST['name'];
switch($name){
     case 'Вася':
          echo 'Ну, здравствуй Вася, проходи!';
          break;
     case 'Петя':
          echo 'Здарово Петюнь, давай к нам!';
          break;
     case 'Маша':
          echo 'Добро пожаловать, Машенька!';
          break;
     default:
          if ($name=$_POST['name']){
               echo 'А мы тебя,'.' '.$name.', '. 'не знаем!';
          }
}
?>
     </body>
</html>

Ну и на закуску

Простейший калькулятор на PHP.

<?php
//объявляем переменные
$num1=(int)$_POST['num1'];
$num2=(int)$_POST['num2'];
$operator=$_POST['operator'];//пишем переключатель оператора
switch($operator) {
     case "+":                                          //если оператор'+',
          $result = $num1+$num2;          //то результат = число1+число2
          break;
     case "-":                                           //если оператор'-',
          $result = $num1-$num2;           //то результат = число1-число2
          break;
     case "*":                                          //если оператор'*',
          $result = $num1*$num2;          //то результат = число1*число2
          break;
     case "/":                                         //если оператор'/',
          if($num2==0) {                          //если число 2 = 0,
               $error = "Делить на ноль нельзя!";//результат будет выдавать ошибку
               $result = false;
         break;
         }
         $result = $num1/$num2;                   //то результат = число1/число2
         break;
     default:
          $result=false;                                         //иначе результата не будет
}
?>
<html>
     <head>
          <meta charset="utf-8">
         <title>Калькулятор</title>
     </head>
     <body>
          <h1>Калькулятор</h1>
          <form action="" method="POST">
               <p>число 1<input type="text" name="num1"></p>
               <p>оператор<input type="text" name="operator"></p>
               <p>число 2<input type="text" name="num2"></p>
               <p><input type="submit" name="submit" value="Считать"></p>
          </form>
               <p><?php echo $num1.$operator.$num2.'='.$result.$error;?></p>
     </body>
</html>