
- •Скалярные переменные
- •Вывод переменных
- •Соединение переменных
- •Интерполяция
- •Форматирование вывода валюты
- •Переменные массивы
- •Массивы с числовыми индексами
- •Ассоциативные массивы
- •Функции для работы с массивами
- •Константы php
- •Вывод констант
- •Операторы php
- •Порядок выполнения операций
- •Строки php
- •Строки в одиночных кавычках
- •Строки в двойных кавычках
- •Функции для работы со строками
- •Функции даты и времени
- •Включаемые файлы
- •Использование функций
- •Доступ odbc
- •Соединения odbc с помощью dsn
- •Соединения odbc без dsn
- •Добавление записей
- •Выбор записей
- •Удаление записей
- •Изменение записей
- •Доступ к MySql
- •Добавление записей
- •Выбор записей
- •Удаление записей
- •Открытие файлов
- •Чтение файлов
- •Запись в файлы
- •Копирование файлов
- •Удаление файлов
- •Переименование файлов
- •Получение данных формы
- •Пересылка файлов
Функции для работы со строками
Система PHP содержит ряд функций для работы со строками. Следующий список содержит некоторые из наиболее распространенных строковых функций.
strlen(string) – определяет длину строки string.
ltrim(string) – удаляет символы-разделители в начале строки string.
rtrim(string) – удаляет символы-разделители в конце строки string.
strpbrk(string, char) – ищет в строке string символ char. Возвращает false или строку, начинающуюся с найденного символа.
strtoupper(string) – преобразует строку в верхний регистр.
strtolower(string) – преобразует строку в нижний регистр.
strrev(string) – возвращает строку string в обратном порядке.
eregi(pattern, subject) – выполняет независимое от регистра символов сравнение с выражением. В строке subject происходит поиск регулярного выражения, заданного строкой pattern.
Следующий блок кода демонстрирует, как использовать строковые функции PHP.
<?php
$string = "Hello World";
$another_string = "Welcome to PHP";
echo strlen($string);
echo strtoupper($another_string);
echo strrev($another_string);
echo strpbrk($string, "W");
?>
11
WELCOME TO PHP
PHP ot emocleW
World
Первая строка выводит длину строки "Hello World", равную 11. Затем строка "Welcome to PHP" преобразуется в верхний регистр и выводится в окне браузера. Эта строка используется также с функцией strrev для изменения порядка символов строки на обратный. Наконец, в строке происходит поиск символа "W". Так как первое появление символа происходит в тексте "World", выводится эта строка.
Функции даты и времени
Базовые функции PHP для даты и времени позволяют форматировать отметку времени для применения в запросах базы данных или просто для вывода даты и времени в окне браузера. PHP включает следующие функции даты и времени:
date(format) – возвращает текущее время сервера, форматированное согласно заданному множеству параметров format.
checkdate(month, day, year) – проверяет заданную дату. Успешная проверка означает, что год year находится между 0 и 32767, месяц month – между 1 и 12, и правильное количество дней каждого месяца.
time() – возвращает текущее время сервера, измеренное в секундах, начиная с 1 января 1970 г.
Следующая таблица содержит допустимые форматы date():
a |
выводит "am" или "pm" |
A |
выводит "AM" или "PM" |
h |
часы в 12-часовом формате (01 – 12) |
H |
часы в 24-часовом формате (00 – 23) |
g |
часы в 12-часовом формате без ведущего нуля (1 – 12) |
G |
часы в 24-часовом формате без ведущего нуля (0 – 23) |
i |
минуты (00 – 59) |
s |
секунды (00 – 59) |
d |
день месяца двумя цифрами (01 – 31) |
D |
день недели текстом (Mon – Sun) |
l |
день недели длинным текстом (Monday – Sunday) |
F |
месяц длинным текстом (January – December) |
n |
месяц двумя цифрами (1 – 12) |
Y |
год четырьмя цифрами (2005) |
y |
год двумя цифрами (05) |
S |
английские порядковые суффиксы (th, nd, st) |
Следующая страница использует функцию PHP date() для определения и вывода текущего времени сервера и даты:
<?php
echo "<span style='font:10pt arial'>Today is ".date('l F j Y')."</span>";
echo "<br/>";
echo "<span style='font:10pt arial'>The current time is:</span>".
date('g:i:s a');
?>
Формат даты/времени, выводимый с помощью функции date(), зависит от типов параметров формата, подставленных в функцию. Параметры функции date() можно объединять, разделяя запятой ",", двоеточием ":" или другими знаками пунктуации, в зависимости от желаемого формата вывода. Все параметры, однако, должны быть заключены в одиночные кавычки. В примере выше время выводится с помощью параметров формата времени g, i, s, и a. Двоеточия и пробелы также вставляют для разделения часов, минут, секунд и признаков am/pm.
Функции checkdate() и time() обычно используются в процессах принятия решений. Поэтому они подробнее будут рассмотрены в дальнейшем.
Лекция 4. Структуры принятия решений
Оператор If
При создании кода часто требуется выполнять различные действия на основе некоторого выбора. В PHP это можно делать с помощью условных операторов – оператора if, оператора if … else и оператора elseif.
if – этот оператор используется для выполнения блока кода, когда выполняется условие ( true ).
if...else – этот оператор используется для выполнения блока кода, когда условие выполняется ( true ), или для выполнения другого блока кода, когда условие не выполняется ( false ).
elseif – комбинация if и else. Оператор расширяет оператор if, чтобы выполнялся другой оператор в случае, если исходное выражение if оценивается как FALSE. В отличие от else он будет выполнять альтернативное выражение, только если условное выражение elseif оценивается как TRUE.
В том случае, когда необходимо выполнить блок кода, если выполняется некоторое условие ( true ), можно использовать оператор if.
Ниже представлен синтаксис оператора if:
if (условие) {
// выполняемый код
}
Строки кода оператора if заключаются в фигурные скобки ( {} ). Эти скобки определяют начало (открывающая скобка { ) и конец (закрывающая скобка } ) оператора If. Следующий пример демонстрирует использование оператора if.
<?php
$number = 5;
if ($number <= 10)
{
echo "Число меньше или равно 10.";
}
?>
Число меньше или равно 10.
В приведенном выше примере число 5 присваивается переменной $number. Затем сценарий PHP использует оператор сравнения "<=" (меньше или равно) для сравнения значения $number с числом 10. Если значение меньше или равно 10, оператор echo выводит сообщение " Число меньше или равно 10" в окне браузера. Можно видеть, что скобки применяются для ограничения блока оператора if. Открывающая скобка { появляется сразу после оператора условия, а закрывающая скобка } — в конце оператора if.
Вспомните, что все операторы PHP должны завершаться с помощью терминатора инструкции ( ; ): echo "Число меньше или равно 10.";
В некоторых случаях может понадобиться предоставить альтернативное сообщение. В приведенном выше примере предположим, что переменная $number содержит число 15, которое больше 10. Альтернативное сообщение должно выводиться, чтобы пользователь знал: число больше 10. Это можно выполнить с помощью оператора if … else.
<?php
$number = 15;
if ($number <= 10) {
echo "Число меньше или равно 10.";
}
else {
echo "Число больше 10";
}
?>
Число больше 10.
В приведенном выше примере число 15 присваивается переменной $number. Затем сценарий PHP использует оператор сравнения "<=" (меньше или равно) для сравнения значения $number с числом 10. Если это значение меньше или равно 10, оператор echo выводит сообщение "Число меньше или равно 10" в окне браузера. Теперь в код добавлен оператор else, чтобы выводить альтернативное сообщение, если условие в операторе if не выполняется. Альтернативное сообщение "Число больше 10" выводится в окне браузера, если оператор условия возвращает false. Здесь также используются скобки для ограничения блока оператора if. Открывающая скобка { появляется сразу после оператора условия, а закрывающая скобка } — в конце оператора if. Скобки также используются для ограничения альтернативного блока оператора else.
Третий тип условного оператора является структурой elseif. Оператор elseif является комбинацией if и else. Подобно else он расширяет оператор if, чтобы выполнить другой оператор, если условное выражение исходного if оценивается как FALSE. Однако в отличие от else он будет выполнять это альтернативное выражение, только если условное выражение в elseif оценивается как TRUE. В одном операторе if может быть несколько структур elseif. Первое выражение elseif (если такое имеется), которое оценивается как TRUE, будет выполнено.
<?php
$number = 15;
if ($number < 10) {
echo "Число меньше 10.";
}
elseif ($number == 10) {
echo "Число равно 10.";
}
else {
echo "Число больше 10.";
}
?>
Число больше 10.
В этом примере числовое значение переменной $number сравнивается с 10. Сперва оператор if проверяет, что $number меньше 10. Если этот оператор выполняется ( true ), выводится сообщение "Число меньше 10". Затем оператор elseif используется для проверки, что $number равно 10. Если этот оператор оценивается как true, выводится сообщение "Число равно 10". Оператор elseif выполняется, ТОЛЬКО если оператор if возвращает FALSE. Наконец, если операторы if и elseif возвращают FALSE, выполняется оператор else и выводится сообщение "Число больше 10". В то время как оператор elseif позволяет проверить только одно условие, структуру if можно применять для проверки множества условий.
Следующий пример использует функцию checkdate(), функцию explode() и оператор if … else для проверки правильности строки даты.
<?php
$orig_date = "09/19/2005";
$date = explode("/", "$orig_date");
$month = $date[0];
$day = $date[1];
$year = $date[2];
$result = checkdate($month, $day, $year);
if ($result == true)
{
echo "Правильная дата";
}
else
{
echo "Неправильная дата!";
}
?>
Правильная дата
Операторы if можно использовать "в одиночку" либо как часть оператора if...else или if...elseif...else. В любом случае вы обнаружите, что эта структура будет важным элементом в любой программе.
Оператор switch
В дополнение к операторам if, рассмотренным в предыдущем разделе, PHP включает четвертый тип условного оператора, называемый оператором switch. Оператор switch очень похож или является альтернативой для команд if...else if...else. Оператор switch проверяет условие. Результат этой проверки определяет, какой case выполняется. switch используется обычно, когда ищут точный (равенство) результат, вместо условия больше или меньше. При проверке диапазона значений должен применяться оператор if.
switch – используйте этот оператор для выбора одного из нескольких блоков кода для выполнения.
Ниже представлен синтаксис оператора switch.
<?php
switch (выражение) {
case "значение1":
// код, который будет выполнен, если выражение = значение1;
break;
case "значение2":
// код, который будет выполнен, если выражение = значение2;
break;
default:
// код, который будет выполнен, если выражение не равно ни значение1, ни значение2;
}
?>
Подобно оператору if строки кода в операторе switch заключаются в фигурные скобки.
Эти скобки определяют начало и конец оператора switch. Следующий пример демонстрирует использование оператора switch.
<?php
$number = 25;
switch ($number) {
case 40:
echo "Значение \$number равно 40";
break;
case 25:
echo "Значение \$number равно 25";
break;
default:
echo "Значение \$number отлично от 25 и 40";
}
?>
Оператор switch может включать множество операторов case. В предыдущем примере показаны два оператора case. Создается переменная $number, которой присваивается значение 25. Оператор switch используется для сравнения значения $number с другими значениями. Проверяемое (сравниваемое) выражение (в данном случае $number ) помещается внутри скобок сразу после оператора switch. Затем вызывается последовательность операторов case для сравнения выражения с другими значениями. Эти значения помещаются сразу после оператора case. (Примечание: если проверяемые значения являются строками, они должны заключаться в кавычки.) За значением, которое сравнивается с выражением, следует двоеточие ( :). Операторы case аналогичны конструкциям if и elseif. Если значение оператора case будет true, то выполняется код, связанный с этим оператором, и оператор break. Оператор break приводит к завершению оператора switch. Остальные операторы case проверяться не будут. В конце оператор switch содержит инструкцию default. Она аналогична оператору else. Если ни один из операторов case не будет выполнен (не будет иметь значение TRUE ), выполняется оператор default. Здесь одновременно происходит несколько вещей:
проверяется условие switch и находится значение ( $number == 25 );
значение условия передается по очереди операторам case ;
если это значение совпадает со значением case, выполняется код этого блока. Оператор break приводит к завершению оператора switch. Остальные операторы case не проверяются;
если проверяемое значение не совпадает ни с одним из значений case, выполняется раздел default ;
в приведенном выше примере, так как выражение "значение $number" равно 25, выполняется второй оператор case, и в окне браузера выводится текст "Значение $number равно 25".
Лекция 5. Циклические структуры
Циклы while
В программировании часто необходимо повторить один и тот же блок кода несколько раз. Это можно реализовать с помощью операторов цикла. Язык PHP содержит несколько типов операторов цикла. Данный раздел рассматривает цикл while.
Оператор while циклически повторяет блок кода, пока указанное условие имеет значение true. Другими словами, оператор while будет выполнять блок кода, если и пока условие будет истинным.
Базовый синтаксис цикла while показан ниже.
while (условие) {
выполняемый код;
}
Код в цикле while будет повторно выполняться, пока условие в начале цикла имеет значение true. Блок кода, связанный с оператором while, всегда заключается в фигурные скобки.
Следующий пример демонстрирует цикл while, который будет выполняться, пока значение переменной $number будет больше или равно 2.
<?php
$number = 5;
while ($number >= 2) {
echo $number . "<br/>";
$number -= 1;
}
?>
В приведенном выше примере переменная $number получает начальное значение, равное 5. Цикл while выполняется, пока условие ( $number >=2 ), или значение $number больше или равно 2, и печатает в окне браузера значение $number. В конце блока цикла значение $number уменьшается на 1.
Ниже показан вывод, создаваемый примером цикла.
5
4
3
2
При первом выполнении значение $number равно 5. Так как 5 больше 2, используется оператор echo для вывода значения 5. При выводе присоединяется <br/>, чтобы создавать возврат каретки при каждом выполнении цикла. Затем значение $number уменьшается на 1. Во время второй итерации значение $number равно 4. Так как 4 больше 2, то оператор echo выводит значение 4. Этот процесс продолжается, пока значение $number равно 3 и 2. Когда $number равно 2, оператор echo выводит значение 2, а значение $number затем уменьшается на 1. Так как 1 не больше и не равно 2, то условие больше не выполняется, и цикл while заканчивается.
Циклы do while
Оператор do...while повторяет циклически блок кода, пока определенное условие принимает значение true. Другими словами, оператор do…while будет выполнять блок кода, если и пока условие будет выполняться (т.е. оцениваться как true ).
Цикл do...while аналогичен по своей природе циклу while, рассмотренному в предыдущем разделе. Ключевое различие состоит в том, что тело цикла do...while будет обязательно выполнено как минимум один раз. Это связано с тем, что оператор условия оценивается в конце оператора цикла после выполнения тела цикла.
Базовый синтаксис цикла do…while показан ниже.
do {
выполняемый код;
}
while (условие);
Выполнение кода внутри цикла do…while будет повторяться, пока условие в конце цикла будет оцениваться как true. Блок кода, связанный с оператором do…while, всегда размещается внутри фигурных скобок.
Следующий пример демонстрирует цикл do…while, который продолжает выполняться, пока переменная $number будет больше или равна 2.
$number = 5;
do {
echo $number . "<br/>";
$number -= 1;
}
while ($number >= 2);
В приведенном выше примере переменная $number инициализируется значением 5. Цикл do…while выполняется до тех пор, пока справедливо условие ( $number >=2 ) или $number больше или равно 2, выводя значение $number в окне браузера. В конце блока цикла значение $number уменьшается на 1.
Ниже показан вывод, создаваемый примером цикла:
5
4
3
2
Во время первого выполнения значение $number равно 5. Так как условие для выполнения цикла не проверяется, пока цикл не будет выполнен один раз, то выводится значение $number, равное 5. Затем значение $number уменьшается на 1, становясь равным 4. Так как 4 больше 2, снова выполняется цикл, и во время второй итерации используется оператор echo для вывода значения 4. В вывод добавляется <br/>, чтобы создать возврат каретки при каждом выполнении цикла. Этот процесс продолжается, пока значение $number равно 3 и 2. Когда $number становится равным 2, оператор echo выводит значение 2, и значение $number уменьшается затем до 1. Так как 1 не больше и не равно 2, то условие больше не выполняется, и цикл do…while заканчивается.
Цикл for
Оператор цикла for используется, когда известно, сколько раз необходимо выполнить оператор или последовательность операторов. В связи с этим цикл for называют точным циклом.
Базовый синтаксис цикла for показан ниже.
for (инициализация; условие; шаг цикла) {
выполняемый код;
}
Оператор цикла for имеет три параметра. Первый параметр используется для инициализации переменных, второй содержит условие, а третий включает в себя приращения, требуемые для реализации цикла. Блок кода, связанный с оператором for, заключается в фигурные скобки ({}), если блок состоит из одного оператора, то фигурные скобки не обязательны.
Следующий пример демонстрирует цикл for для 4-кратного вывода сообщения "Добро пожаловать в мир PHP":
<?php
for ($counter=1; $counter < 5; $counter++) {
echo "Добро пожаловать в мир PHP!<br/>";
}
?>
В приведенном выше примере цикл for включает три параметра, которые выполняют следующие задачи:
Переменная $counter инициализируется значением 1.
$counter < 5 определяет условие, которое должно выполняться для выполнения цикла.
$counter++ увеличивает значение переменной $counter при каждом выполнении цикла.
Ниже показан вывод, созданный этим примером цикла.
Добро пожаловать в мир PHP!
Добро пожаловать в мир PHP!
Добро пожаловать в мир PHP!
Добро пожаловать в мир PHP!
При первом выполнении переменная $counter инициализируется значением 1. Так как 1 меньше 5, $counter увеличивается на 1. Затем используется оператор echo для вывода строки "Добро пожаловать в мир PHP!". К выводу присоединяется <br/>, чтобы создавать возврат каретки при каждом выполнении цикла. Во время второй итерации значение $counter будет равно 2. Так как 2 меньше 5, то оператор echo снова выводит строку "Добро пожаловать в мир PHP!". Этот процесс продолжается при значениях $counter, равных 3 и 4. Когда $counter становится равным 5, условие больше не выполняется, и цикл for заканчивается.
Циклы for используются также в качестве удобного способа выполнения итераций по значениям массива. Вспомните, что массивы состоят из элементов и индексов. Каждый элемент имеет связанный с ним индекс. Первый индекс массива с числовыми индексами равен 0. До сих пор при выводе элементов массива требовалось выводить каждый элемент отдельно. Для больших массивов это может потребовать много времени и оказаться громоздким. Циклы for решают эту проблему. В следующем примере создается массив с 5 элементами. Затем применяется цикл for для вывода всех значений массива.
<?php
//Создается новый массив, содержащий 5 значений цвета
$colors = array('red', 'green', 'blue', 'yellow','white');
// Цикл for используется для итераций по массиву и вывода каждого элемента
for ($i = 0; $i < sizeof($colors); $i++)
{
echo "Значением элемента массива", $i+1," является $colors[$i].".<br>;
}
?>
Массив $colors содержит пять элементов — $colors[0] = "red", $colors[1] = "green", $colors[2] = "blue", $colors[3] = "yellow", и $colors[4] = "white". Создается цикл for. Переменной счетчику $i сначала задается значение 0, что соответствует первому элементу массива. Затем задается условие, проверяющее, что значение счетчика $i меньше sizeof($colors) или общего числа элементов массива. Здесь мы знаем, что размер массива равен 5, однако в большинстве случаев размер массива во время выполнения неизвестен. Наконец, переменная счетчика увеличивается на 1 во время каждой итерации. На каждом шаге выполнения цикла выводится строка — "Значением элемента массива $i+1 является $colors[$i]". Значения $i+1 и $colors[$i] расширяются и создают при выводе литеральные значения. Цикл выполняется, пока счетчик не превысит число элементов или размер массива. Получаемый вывод показан ниже.
Значением элемента массива 1 является red.
Значением элемента массива 2 является green.
Значением элемента массива 3 является blue.
Значением элемента массива 4 является yellow.
Значением элемента массива 5 является white.
Циклы являются полезными конструкциями, которые активно используются при программировании.
Цикл foreach
Конструкция foreach является вариацией цикла for и применяется для итераций на массивах. Существуют две различные версии цикла foreach.
Базовый синтаксис обеих версий цикла foreach показан ниже.
foreach ($array as $value)
{
оператор
}
foreach ($array as $key => $value)
{
оператор
}
Первый тип цикла foreach используется для итераций по массиву, обозначенному как $array. Во время каждой итерации цикла текущее значение массива присваивается переменной $value, и счетчик цикла увеличивается на единицу. Цикл продолжается, пока foreach не достигнет последнего элемента или верхней границы заданного массива. Во время каждой итерации значение переменной $value можно использовать любым способом, но исходное значение массива не изменяется. Чтобы изменить реальное значение массива, необходимо добавить символ "&". Любые изменения, сделанные в &value, будут присвоены элементу массива с текущим индексом.
Следующий пример демонстрирует, как цикл foreach применяется для итераций по значениям массива.
<?php
$my_array = array('red','green','blue');
echo "Различные цвета включают: ";
foreach($my_array as $value)
{
$colors = $value . " ";
echo $colors;
}
?>
Во время каждой итерации имя цвета, связанное с текущим элементом массива, присваивается переменной $colors. Также добавляется одиночный пробел между соседними именами цветов для целей вывода. Когда цикл достигает конца массива, создается следующий вывод.
Различные цвета включают: red green blue
Вторая форма цикла обеспечивает такие же функции, что и первая, но дополнительно присваивает на каждом шаге итерации индекс текущего элемента массива или ключ переменной $key. В предыдущем примере массив $my_array содержит три элемента: $my_array[0] = "red", $my_array[1] = "green", и $my_array[2] = "blue". В то время как переменная $value содержит значения элементов массива red, green и blue, переменная $key содержит индексы элементов массива 0, 1, и 2.
Лекция 6. Повторное использование кода и функции