Читаем без скачивания Курс "Язык программирования PHP" - Нина Савельева
Шрифт:
Интервал:
Закладка:
<?
// пусть наша подпись
// будет константой
define("SIGN","С уважением, Вася");
// зададим массивы людей и событий
$names = array("Иван Иванович",
"Петр Петрович",
"Семен Семенович");
$events = array(
"f" => "день открытых дверей",
"o" => "открытие выставки",
"p" => "бал выпускников");
// составим текст приглашения
$str = "Уважаемый (ая), $names[0]";
$str .= "<br>Приглашаем Вас на ".
$events["f"];
$str .= "<br>" . SIGN;
echo $str; // выведем текст на экран
?>
Заключение
Итак, в этой лекции мы познакомились с основами синтаксиса языка PHP, научились работать с переменными различных типов, константами, операторами, познакомились со всеми существующими в PHP типами данных. Говоря о таких типах данных, как строки и массивы, мы разобрали только самые основы. Эти конструкции настолько удобны и просты в использовании, что заслуживают отдельного разговора. Подробности будут изложены в последующих лекциях. Решая задачу, мы старались использовать только имеющиеся знания и не забегать вперед, поэтому решение не слишком подходит для практического применения. В следующей лекции мы исправим этот недостаток и создадим более универсальный шаблон электронного письма.
Управляющие конструкции
Условные операторы
Оператор if
Это один из самых важных операторов многих языков, включая PHP. Он позволяет выполнять фрагменты кода в зависимости от условия. Структуру оператора if можно представить следующим образом:
if (выражение) блок_выполнения
Здесь выражение есть любое правильное PHP-выражение (т.е. все, что имеет значение). В процессе обработки скрипта выражение преобразуется к логическому типу. Если в результате преобразования значение выражения истинно (True), то выполняется блок_выполнения. В противном случае блок_выполнения игнорируется. Если блок_выполнения содержит несколько команд, то он должен быть заключен в фигурные скобки { }.
Правила преобразования выражения к логическому типу:
- логическое False
- целый ноль (0)
- действительный ноль (0.0)
- пустая строка и строка "0"
- массив без элементов
- объект без переменных (подробно об объектах будет рассказано в одной из следующих лекций)
- специальный тип NULL
- Все остальные значения преобразуются в TRUE.
<?
$names = array("Иван","Петр","Семен");
if ($names[0]=="Иван") {
echo "Привет, Ваня!";
$num = 1;
$account = 2000;
}
if ($num) echo "Иван первый в списке!";
$bax = 30;
if ($account > 100*$bax+3)
echo "Эта строчка не появится
на экране, так как условие не выполнено";
?>
Оператор else
Мы рассмотрели только одну, основную часть оператора if. Существует несколько расширений этого оператора. Оператор else расширяет if на случай, если проверяемое в if выражение является неверным, и позволяет выполнить какие-либо действия при таких условиях.
Структуру оператора if, расширенного с помощью оператора else, можно представить следующим образом:
if (выражение) блок_выполнения
else блок_выполнения1
Эту конструкцию if...else можно интерпретировать примерно так: если выполнено условие (т.е. выражение=true), то выполняем действия из блока_выполнения, иначе – действия из блока_выполнения1. Использовать оператор else не обязательно.
Посмотрим, как можно изменить предыдущий пример, учитывая необходимость совершения действий и в случае невыполнения условия.
<?
$names = array("Иван","Петр","Семен");
if ($names[0]=="Иван") {
echo "Привет, Ваня!";
$num = 1;
$account = 2000;
} else {
echo "Привет, $names[0].
А мы ждали Ваню :(";
}
if ($num) echo "Иван первый в списке!";
else echo "Иван НЕ первый в списке?!";
$bax = 30;
if ($account > 100*$bax+3)
echo "Эта строка не появится на экране,
так как условие не выполнено";
else echo "Зато появится эта строка!";
?>
Оператор elseif
Еще один способ расширения условного оператора if – использование оператора elseif. elseif – это комбинация else и if. Как и else, он расширяет if для выполнения различных действий в том случае, если условие, проверяемое в if, неверно. Но в отличие от else, альтернативные действия будут выполнены, только если elseif-условие является верным. Структуру оператора if, расширенного с помощью операторов else и elseif, можно представить следующим образом:
if (выражение) блок_выполнения
elseif(выражение1) блок_выполнения1
...
else блок_выполненияN
Операторов elseif может быть сразу несколько в одном if-блоке. Elseif-утверждение будет выполнено, только если предшествующее if-условие является False, все предшествующие elseif-условия являются False, а данное elseif-условие – True.
<?
$names = array("Иван","Петр","Семен");
if ($names[0]=="Иван") {
// если первое имя в массиве Иван
echo "Привет, Ваня!";
}elseif ($names[0] == "Петр"){
// если первое имя
// не Иван, а Петр
echo "Привет, Петя!";
}elseif ($names[0] == "Семен"){
// если первое имя не
// Иван, не Петр, а Семен
echo "Привет, Сеня!";
}else {
// если первое имя не Иван,
// не Петр и не Семен
echo "Привет, $names[0]. А ты кто такой?";
}
?>
Альтернативный синтаксис
PHP предлагает альтернативный синтаксис для некоторых своих управляющих структур, а именно для if, while, for, foreach и switch. В каждом случае открывающую скобку нужно заменить на двоеточие (:), а закрывающую – на endif;, endwhile; и т.д. соответственно.
Например, синтаксис оператора if можно записать таким образом:
if(выражение): блок_выполнения endif;
Смысл остается тем же: если условие, записанное в круглых скобках оператора if, оказалось истиной, будет выполняться весь код, от двоеточия «:» до команды endif;. Использование такого синтаксиса полезно при встраивании php в html-код.
<?php
$names = array("Иван","Петр","Семен");
if ($names[0]=="Иван"):
?>
Привет, Ваня!
<?php endif ?>
Если используются конструкции else и elseif, то также можно задействовать альтернативный синтаксис:
<?php
if ($a == 5):
print "a равно 5";
print "...";
elseif ($a == 6):
print "a равно 6";
print "!!!";
else:
print "a не равно ни 5, ни 6";
endif;
?>
Оператор switch
Еще одна конструкция, позволяющая проверять условие и выполнять в зависимости от этого различные действия, – это switch. На русский язык название данного оператора можно перевести как «переключатель». И смысл у него именно такой. В зависимости от того, какое значение имеет переменная, он переключается между различными блоками действия. switch очень похож на оператор if...elseif...else или набор операторов if. Структуру switch можно записать следующим образом:
switch (выражение или переменная){
case значение1:
блок_действий1
break;
case значение2:
блок_действий2
break;
...
default:
блок_действий_по_умолчанию
}
В отличие от if, здесь значение выражения не приводится к логическому типу, а просто сравнивается со значениями, перечисленными после ключевых слов case (значение1, значение 2 и т.д.). Если значение выражения совпало с каким-то вариантом, то выполняется соответствующий блок_действий – от двоеточия после совпавшего значения до конца switch или до первого оператора break, если таковой найдется. Если значение выражения не совпало ни с одним из вариантов, то выполняются действия по умолчанию (блок_действий_по_умолчанию), находящиеся после ключевого слова default. Выражение в switch вычисляется только один раз, а в операторе elseif – каждый раз, поэтому, если выражение достаточно сложное, то switch работает быстрее.
Пример 3.3 можно переписать с использованием switch следующим образом:
<?
$names = array("Иван","Петр","Семен");
switch ($names[0]){
case "Иван":
echo "Привет, Ваня!";
break;
case "Петр":
echo "Привет, Петя!";
break;
case "Семен":