Итак, в предыдущей теме рассказывается про самые основы. Я предполагаю, что нужно ознакомиться с предыдущими уроками.
В этот же раз я расскажу о конструкциях php. О простейших, если быть точным.
О приемах программирования я расскажу в следующих уроках, а пока что - только основы
Начнем. Так как любая программа создается человеком, то (как правило), в нее вкладывается некоторый смысл. То есть логика.
А для управления логикой существуют управляющие конструкции. Ведь, по сути, что значит исполнение программы? Это - пошаговое исполнение, инструкция за инструкцией, кода, написанного программистом. В дальнейшем в качестве примера я приведу случаи, когда это не совсем так, но пока что хватит и этого знания.
И вот для управления ходом этого самого исполнения нам пригождаются конструкции. Отмечу, что они такие не только в PHP, но и почти везде, разница лишь в синтаксисе.
Самым первым я приведу
ветвление. В самом деле - ведь очень часто нам хочется в одном случае заставить программу "выполнить" что-то одно, а в другом - нечто другое.
Вот например, есть строка, содержащая имя. Мне легко понять, мое ли оно:
PHP:
скопировать код в буфер обмена
<?PHP
//мы предположим, что в ходе выполнения программы мы откуда-то взяли переменную $sName
if($sName=="EuGen")
{
echo("Да, это я");
}
else
{
echo("Наверное, это Valenok");
}
?>
Немного прокомментирую - для понимания что такое переменная, что значит "==" - смотрите предыдущий урок. Как мы видим, ветвление - это оператор
if. Он просто проверяет условие. Условие - это
выражение логического типа. Логического - значит, принимающего одно из значений - ложь или истина. Наши компьютеры столь совершенны, что способны отличить ложь от истины, и, значит, выполнить нужный участок кода.
Если условие истинно - исполняется блок внутри if. Если же нет - то можно дописать
необязательный блок внутри
else. Он выполнится, если условие ложно. Но можно его и не писать, в таком случае программа продолжит свое исполнение на первом следующем за
if операторе. Здесь важно понимать, что я имею ввиду на первом не
внутри блока, а
после блока
if. Очень важно понимать, что условный оператор - такой же оператор как и все, а потому можно считать блоки кода внутри него - некой неделимой частью.
Однако условный оператор умеет больше. Мы можем задать не одно, а сразу несколько условий для того, чтобы управлять исполнением сразу нескольких участков
PHP:
скопировать код в буфер обмена
<?PHP
//$sName я опять же взял "откуда-то раньше"
if($sName=="EuGen")
{
echo("Да, это я");
}
elseif($sName=="Valenok")
{
echo("Теперь я точно уверен, это Valenok");
}
elseif($sName=="Champion")
{
echo("Это тоже наш автор, Champion");
}
else
{
echo("Я запутался..");
}
?>
Как видим, можно писать этих блоков сколько угодно. Да, кстати, я еще не рассказывал про
функции и потому, наверное, вам непонятно, что такое это самое "echo". Сейчас просто скажу, что это и не важно - важно понимать устройство кода, устройство условного оператора. Про эту функцию расскажем позднее.
Но в PHP существует еще и очень полезный "быстрый" способ присвоить значение переменной, используя ветвление. Это не оператор if, но выглядит очень похоже.
Вот как это можно сделать:
Это может выглядеть необычно, но на самом деле все просто. Мы присваиваем переменной $result значение выражения, которое вычисляется в момент исполнения оператора присваивания. В приведенном выражении участвует еще одна переменная, $sName, она-то и будет управлять тем, что попадет в конечном итоге в значение $result.
При исполнении присваивания проверится значение выражения
$sName=="EuGen". Если оно - истинно, то в переменную попадет то, что следует после знака "?". Иначе - то, что следует после знака ":".
А теперь немного подумайте и ответьте, что попадет в $result в результате:
Я продолжу рассказывать вам об управляющих конструкциях. Вы уже знаете, что такое условный оператор if, теперь же пора поговорить о
циклах
Что такое цикл? Представьте себе, что вам нужно найти сумму первых 20 натуральных чисел. Вот как это будет выглядеть, если использовать то, что мы уже знаем:
Как видим, это очень неудобно. Ведь, предположим, что мы хотим найти сумму первых 50000 натуральных чисел, и тогда ...
Для решения нашей задачи очень подойдет цикл. Цикл - это тоже оператор, и это следует помнить. Цикл позволяет выполнить заданное количество раз один и тот же участок кода.
Как задается это самое "количество раз"? По-разному. Строго говоря, есть разные способы организовать циклы, но по сути все они отличаются лишь способом задания этого самого "количества раз", которое выполнится цикл.
Рассмотрим самый простой из циклов - цикл
for
Он позволяет выполнить участок кода фиксированное число раз. Сразу - к делу:
Перейдем к еще одной управляющей конструкции php. А именно - к оператору
выбора. Этот оператор позволяет делать более сложные ветвления, чем if, более простым способом. На самом деле, при помощи if можно полностью заменить этот оператор, но знать про него полезно.
Итак, этот оператор называется
switch. В дословном переводе - "переключатель", так оно и есть. В лучших традициях, сразу же перейдем к примерам. Пусть мы хотим сделать следующую вещь: вывести день недели по его порядковому номеру.
Сначала приведу решение, а потом поясню:
PHP:
скопировать код в буфер обмена
<?PHP
//$iDayNum получено ранее
switch($iDayNum)
{
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:
echo("А у нас в неделе только 7 дней...");
}
?>
При входе в оператор switch, сначала вычисляется выражение, стоящее в скобках. Затем перебираются все значения, указанные при помощи case. В данном примере мы видим 7 разных значений. Соответственно, когда значение, которое имеет вычисленное в скобках выражение, найдено у какого-либо case, начинается исполнение участка когда внутри case. И вот здесь важно понимать, что означает "внутри case". Когда соответствующее значение найдено, произойдет исполнение
всего, что есть дальше того case, которому соответствует значение. И это значит, что если после этого case есть другие,
они тоже будут выполнены. Это может быть не то, что нам нужно.
И здесь нам на помощь приходит знакомый уже нам оператор break. Он позволяет выйти из оператора switch, и, поставив его после кода, записанного внутри каждого case, мы обеспечим себе исполнение только одного участка кода для каждого значения.
Кроме этого, у оператора switch может быть необязательная часть
default. Код в ней выполнится, если значение выражения не совпало ни с одним из значений в case.
Это очень похоже на часть
else для оператора
if .. elseif .. else
Но не стоит забывать, что switch и if - не одно и то же. Иногда вам может пригодиться возможность switch исполнять весь участок кода, включая другие case, после того как найдено совпадение.
Подведем итоги.
После прочтения этого урока Вы должны знать:
- Что такое ветвление, как его организовать в PHP
- Циклы и их виды в PHP. Управление исполнением циклов
- Оператор выбора в PHP
В заключение я приведу несложные вопросы, которыми вы можете проверить свои знания.
0. Когда наличие else обязательно в операторе if?
1. Что станет результатом исполнения: