Cегодня мы рассмотрим такой логический оператор, как switch в PHP. Что же это за логический оператор и как он работает. Давайте разбираться…
Криптовалюта и майнинг. Что такое майнинг? Узнать это вы можете в интересном видео по ссылке https://www.youtube.com/watch?v=SOVXa2BNoIU .
И для начала посмотрим вот на этот код:
< ?php $ number = 2; if($number == 1) echo "Один"; elseif($number == 2) echo "Два"; elseif($number == 3) echo "Три"; elseif($number == 4) echo "Четыре"; elseif($number == 5) echo "Пять"; elseif($number == 6) echo "Шесть"; elseif($number == 7) echo "Семь"; else echo "Нет такого числа"; ?>
И так, в этом коде все правильно и со стороны программирования, и со стороны синтаксиса. Кстати, многие так и пишут. Однако, есть такое понятие как комильфо. Так вот — это не комильфо. Почему? Ну вот смотрите, здесь у нас проверяется ровно одна переменная. Чем хорош оператор if — тем что можно проверять много условий, например так как у нас было с магазином — если магазин открыт, если у меня есть деньги и т.д. Вот здесь оператору if-else самое место.
В данном случае у нас идет простая проверка одной и той же переменной. Для этой цели есть еще один, более удобный условный оператор, который называется switch.
На самом деле эти операторы идентичны. Многие люди, например никогда не используют switch в PHP, а пользуются только if-else и наоборот. Опять же, все зависит от вашего предпочтения и предпочтения того, с помощью чего вы готовы решать ту или иную задачу. Я, например, когда мне нужно проверить одну переменную, всегда использую конструкцию switch. Мне он кажется наиболее удобным для решения подобных задач.
И так, как же записывается конструкция switch в PHP? Давайте смотреть:
< ?php $number = 2; // В переменной $a есть какое-то число и нам нужно его проверить и в зависимости от этого числа что-то сделать. // Открываем конструкцию switch и в круглых скобках записываем нашу переменную switch($number){ // В фигурных скобках у нас идет проверка этой переменной с помощью case case 1: echo "Первый день - понедельник"; break; case 2: echo "Второй день - вторник"; break; case 3: echo "Третий день - среда"; break; case 4: echo "Четвертый день - четверг"; break; case 5: echo "Пятый день - пятница"; break; case 6: echo "Шестой день - суббота"; break; case 7: echo "Седьмой день - воскресенье"; break; // Если не одно число не совпадает, пишем его в default default: echo "Неизвестное число"; } ?>
Обращаю ваше внимание на оператор break в конце каждого echo. Для чего он нужен? Если вы уберете этот оператор, то посмотрите что у вас выведется в браузер. А выведется следующее: Второй день — вторник Третий день — среда Четвертый день — четверг Пятый день — пятница Шестой день — суббота Седьмой день — воскресенье Неизвестное число. Почему так происходит? Дело в том, что PHP, когда увидит что произошло совпадение, т.е. он смотрит case 1 — не совпало, case 2 — совпало и он начинает выводить все оставшиеся выражения не обращая внимания на другие case, как будто их не существует. Оператор break выбрасывает нас из switch, когда произошло совпадение и выполняет то, что произошло при совпадении — в данном случает в браузер выводится «Вторник». Так же считается, что оператор break не обязателен и если вам действительно нужно, например вывести в браузер все что идет после совпадения вместе с самим совпадением, то оператор break можно не записывать. Далее мы разберем отсутствующий break на примере, где он действительно будет не нужен.
Итак, давайте сделаем небольшую лабораторную работу, где мы напишем действительно нужный код, не вымышленный, а очень даже полезный. В конце урока, я выложу видео с этой лабораторкой, где можно будет посмотреть практически «живую» реализацию реальной задачи.
Приходит к нам заказчик и хочет кусок кода, который будет брать значение директивы POST_MAX_SIZE и выводить это значение в байтах.
По умолчанию в этой директиве значение хранится в мегабайтах и оно равно 8. Вообще эта директива отвечает за то, сколько, вернее какой объем данных можно отправить input-ом.
Наш код должен быть универсальным, т.к. он будет работать под разными хостингами, а у них эта директива разная
Прежде чем приступить к выполнению этого задания, необходимо разъяснить два вопроса:
какая функция возвращает значение любой директивы PHP?
какие допустимые значения там могут быть
Итак:
функция с помощью которой можно получить любое значение из директивы PHP называется ini_get(‘имя директивы’). Обратите внимание, что эта функция всегда возвращает строку, что бы не находилось в директивах.
там может лежать одно из четырех значений:
цифра и буква М — мегабайты (8М)
цифра и буква К — килобайты (256К)
цифра и буква G — гигобайты (1G)
просто число без букв — 123456, что означает просто байты
Вот сам код:
< ?php $max_size = ini_get('post_max_size'); // 8М $letter = $max_size{strlen($max_size) - 1}; // M $max_size = (int)$max_size; // 8 switch($letter){ case 'G': $max_size *= 1024; case 'M': $max_size *= 1024; case 'K': $max_size *= 1024; } echo 'POST_MAX_SIZE = ' .$max_size. ' байт'; ?>