Урок 3. Управляющие конструкции (if else,switch)
Всем привет! Рад приветствовать на новом уроке. Начнем его с условий: if else (если то)
Запишем следующее выражение:
<?php
$number = 5;
if($number == 6){
echo "Число равно 6";
}else{
echo "Число не равно";
}
Посмотрим на эту строчку : if($number == 6){ Говоря прямым текстом, мы спрашиваем : "Если переменная $number равна 6?". Если данное выражение true (правда), значит мы выведем положительный результат - "число равно 6", в противном случае - не равно.
Обратите внимание, что мы используем == , чтобы проверить равенство числа. Есть вариант использовать ===. При данном варианте сравнивается еще и тип переменной. Если мы запишем:
<?php
$number = 1;
if($number == 1){
echo "true";
}
Данное условие вернет true. Но! Если мы запишем вот так:
<?php
if($number === "1"){
echo "true";
}
Здесь ничего выведено не будет. Так как $number - это целое число! (см урок 1 переменные), а сравнение мы ведем со строкой. Но при == это будет правда, так как при данном сравнении не учитывается тип переменной, а только ее значение.
Существуют альтернативные варианты записи условий без фигурных скобок:
<?php
if($number == 1)
echo "true";
Еще один вариант:
<?php if ($number == 3): ?>
Правильный ответ
<?php else: ?>
Не правильный
<?php endif ?>
Переменные булевого типа.
Мы постепенно изучаем типы переменных. Как помните из первого урока, их большое множество. Итак, булев тип - это переменные, которые принимают только 2 значения: true или false. На этом все :)
Записать можно так:
$number = true;
Обратите внимание: записывается без кавычек. Вся сложность заключается в том, как PHP будет вести себя при преобразовании в булев тип. Вот вам небольшая заметка:
var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
Желательно ее выучить наизусть и не путаться. Также само собой разумеющееся:
- само значение boolean FALSE
- integer 0 (ноль)
- float 0.0 (ноль)
- пустая строка, и строка "0"
- массив без элементов
- особый тип NULL (включая неустановленные переменные)
- Объекты SimpleXML, созданные из пустых тегов
Теперь вернемся к нашим условиям. Запишите вот так:
<?php
$number = 1;
if($number)
echo "Работает";
Что тогда мы имеем? Переменная равна нулю. В условие мы передаем только одну переменную, а PHP преобразует ее в булев тип. В данном случае - это правда (true), а, значит, и условие отработает. Можно даже записывать вот так:
<?php
$number = true;
if(!$number)
echo "Работает";
Это отрицание. Звучит так: "Если не правда" В данном случае мы передаем туда true, и получается вот такое выражение true !== false. Отсюда понятно, что наше условие ничего не вернет. Чтобы все отработало как надо, поменяйте значение переменной на $number = 0 (либо $number = false);
Есть еще вариант: когда условия идут последовательно, используют elseif(условие) Для примера:
<?php
$number = 4;
if($number == 3){
echo "Четко 3";
}elseif($number > 5){
echo "Более 5";
}else{
echo "менее 5 и не равно 3";
}
Причем конструкций elseif может быть сколько угодно (но чуть позже я расскажу, почему от этого способа желательно отказаться в пользу конструкции switch)
Конструкция switch.
На примере будет очень доступно понятно, поэтому запишем следующее выражение:
<?php
$number = 30;
switch($number){
case ($number > 10): echo "Число более 10";
case 30: echo "число равно 30";
}
Данный код выведет следующий результат:
//Число равно 10Число равно 3
Как это работает?
В switch в круглые скобки мы передаем переменную, с которой будем работать.
Обратите внимание: конструкция находится в фигурных скобках
Внутри находятся условия, которые записываются следующим образом - case. Для примера: case 3: (случай, когда наша переменная равна трем). В круглых скобках вы можете записать случай, когда переменная больше/меньше/не равна.
Многих может интересовать, как сделать так, чтобы при первом же успешно выполненном условии, получилось остановить выполнение конструкции. Ответ очень простой: надо добавить в конце слово break;
<?php
$number = 30;
switch($number){
case ($number > 10): echo "Число более 10"; break;
case 30: echo "число равно 3"; break;
}
Теперь результат будет такой:
//Число равно 10
Break останавливает выполнение switch и не производит дальнейших действий. Также существует опция для ситуации, когда не выполняется ни одно условие. В данном случае выводится результат по умолчанию, и выглядеть он будет так:
<?php
$number = 7;
switch($number){
case ($number > 10): echo "Число более 10"; break;
case 30: echo "число равно 3"; break;
default: echo "Не попали";
}
Вот теперь вы знаете, как пользоваться условиями, и можете строить логические выражения. Но дальше - только больше, поэтому я вас приглашаю в новый урок!
Курс
- Урок 1. Основы PHP
- Урок 2. Функции вывода строк
- Урок 3. Управляющие конструкции (if else,switch)
- Урок 4. Массив и функция перебора
- Урок 5. Функции
- Урок 6. Волшебные и предопределенные константы
- Урок 7. Заключение. Игра
Облако тегов
Следующая статья
Урок 4. Массив и функция перебора
В данном уроке мы познакомимся с таким типом данных - массив. Разберемся, как правильно их перебирать, заполнять и управлять с значениями.