Урок 3. Управляющие конструкции (if else,switch)

  • 20 декабря 2018
  • 2142
0%

Помогло?

Всем привет! Рад приветствовать на новом уроке. Начнем его с условий: 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 "Не попали";
}

Вот теперь вы знаете, как пользоваться условиями, и можете строить логические выражения. Но дальше - только больше, поэтому я вас приглашаю в новый урок!

Курс

Облако тегов

Следующая статья

Урок 4. Массив и функция перебора

В данном уроке мы познакомимся с таким типом данных - массив. Разберемся, как правильно их перебирать, заполнять и управлять с значениями. 

Сообщения: (0)

?
Публикуя сообщение, вы соглашаетесь с пользовательским соглашением

Читайте также