
- •Государственное образовательное учреждение высшего профессионального образования Волго-Вятская академия государственной службы
- •Разработка Web-приложений
- •Часть 2. Основы php – основного языка создания Web - приложений
- •Оглавление
- •Глава 1. Основы языка php 7
- •Глава 2. Синтаксис и семантика операторов php 58
- •Глава 3. Массивы 103
- •Глава 4. Функции 141
- •Глава 5. Работа с файлами 198
- •Глава 6. Вопросы и задания 271
- •Глава 1.Основы языка php
- •1.1.Замечания о некоторых особенностях языка и среды его выполнения
- •1.2. Как работает обработчик кода php
- •1.3. Синтаксис php – начальные сведения
- •1.3.1. Как интерпретатор распознаёт (различает) код php
- •1.3.2. Синтаксис php разрешает совместное и раздельное использование кода php и html
- •Пример 1‑1
- •1.3.3. Другие особенности синтаксиса php начального уровня
- •Пример 1‑2
- •Наиболее часто применяемые символы управляющих последовательностей
- •1.4. Синтаксис php –типы данных, строки, переменные, константы, функции и выражения
- •1.4.1. Основы понятия «типы данных». Классификация данных в php
- •Скалярных типов (всего четыре):
- •Смешанных типов (всего 2):
- •Специальных типов (всего 2):
- •1.4.2. Интервалы значений числовых данных в php
- •1.4.2.1. Целые числа
- •1.4.2.2.Вещественные (с плавающей точкой) числа
- •1.4.3. Элементы языка, которые «держат» данные. Их синтаксис
- •1.4.3.1. Постановка задачи
- •1.4.3.2. Строки
- •Пример 1‑3
- •Пример 1‑4
- •1.4.3.3. Переменные
- •Пример 1‑5
- •Пример 1‑6
- •Пример 1‑7
- •1.4.3.4. Константы
- •Пример 1‑8
- •1.4.3.5. Функции в php – введение в тему
- •Пример 1‑9 – обобщённая схема определения функции
- •Пример 1‑10
- •1.4.3.6. Функции php по работе с данными
- •Пример 1‑11
- •Пример 1‑12
- •Пример 1‑13
- •Пример 1‑14
- •Пример 1‑15
- •1.4.3.7. Функции php по работе со строками
- •Пример 1‑16
- •Пример 1‑17
- •Пример 1‑18
- •Пример 1‑19
- •1.4.3.8. Понятие «выражение» в php
- •1.4.3.9. Манипуляции с типами
- •Глава 2. Синтаксис и семантика операторов php
- •2.1. Классификация операторов php и порядок их выполнения
- •О ператоры php в порядке убывания приоритета
- •2.2. Математические операторы
- •2.2.1. Арифметические операции
- •Арифметические операторы php
- •Пример 2‑20
- •2.2.2. Математические функции
- •2.2.3. Операторы присваивания
- •Пример 2‑21
- •2.2.4. Операторы инкремента (увеличения) и декремента (уменьшения)
- •Пример 2‑22
- •2.2.5. Строковые операторы
- •Пример 2‑23
- •2.2.6. Побитовые операторы
- •Пример 2‑24
- •Побитовые операторы php
- •2.2.7. Класс логических операторов
- •2.2.8. Операторы (конструкции) управления выполнением скрипта
- •2.2.8.1. Операторы условного перехода
- •If ( условие )
- •Пример 2‑25
- •2.2.8.2. Расширение оператора if - оператор elseif
- •If (выражение) блок_выполнения
- •Пример 2‑26
- •Пример 2‑27
- •Оператор переключения "switch" ("выбор")
- •Пример 2‑28
- •2.2.9. Операторы цикла
- •2.2.9.1. Простейший оператор цикла – цикл с предусловием - оператор while
- •While (выражение) {блок_выполнения}20
- •While (выражение): блок_выполнения endwhile;
- •Пример 2‑29
- •2.2.9.2. Цикл с постусловием - оператор do while
- •2.2.9.3. Циклы for
- •Пример 2‑30
- •Пример 2‑31
- •Пример 2‑32
- •2.2.9.4. Частные случаи использования цикла for в php
- •Пример 2‑33
- •Пример 2‑34
- •Пример 2‑35
- •Пример 2‑36
- •2.2.9.5. Об альтернативном синтаксисе операторов цикла
- •Глава 3. Массивы
- •3.1. Общие вопросы использования массивов в php: определение, типы, использование в выражениях и размерность
- •3.2. Создание массивов и особенности их использования в php
- •Пример 3‑37
- •Пример 3‑38
- •3.3. Операции с массивами
- •3.3.1. Вывод элементов массива на экран
- •Пример 3‑39
- •3.3.2. Изменение, перебор элементов и удаление элементов массива
- •Пример 3‑40
- •Пример 3‑41
- •3.3.3. Сортировка массива
- •Пример 3‑42 - сортировка массивов
- •Array(день1,день3, день11, день111);
- •Array(5,1,3,день1,день5,день3,day1,"яблоко","груша","apple")
- •3.3.4. Преобразование строк в массивы и наоборот
- •Пример 3‑43
- •3.3.5. Примеры специальных функций обработки массивов
- •Extract (имя_массива)
- •Пример 3‑44 - использование array_merge() с параметрами разных типов в php 5
- •Пример 3‑45 – обработка массивов
- •3.3.6. Функции по работе с массивами для самостоятельного изучения
- •3.4. Многомерные массивы
- •3.4.1. Введение
- •Пример 3‑46
- •3.4.2. Создание многомерных массивов
- •Пример 3‑47
- •Пример 3‑48
- •3.4.3. Ссылки на элементы многомерных массивов
- •3.4.4. Перебор элементов многомерных массивов
- •Пример 3‑49
- •3.4.5. Операторы над массивами
- •Операторы над массивами
- •Пример 3‑50
- •Глава 4.Функции
- •4.1. Введение
- •4.2.Создание, подключение и использование собственных функций в php
- •4.2.1. Синтаксис описания функции
- •4.2.2. Описание работы функции навигации по страницам сайта
- •4.2.3. Архитектура проекта, иллюстрирующего работу функции
- •Пример 4-1 - код «простого» решения
- •Пример 4‑2 - текст файла index.Php
- •4.3. Передача данных в функцию
- •4.3.1. Передача в функцию списка простых данных
- •Пример 4‑6
- •Пример 4‑7
- •4.3.2. Передача массивов в функцию
- •Пример 4‑8
- •Пример 4‑9
- •4.3.3. Функции с переменным числом аргументов
- •Пример 4‑10
- •4.3.4. Два способа передачи аргументов в функцию
- •4.3.5. Ссылка в php
- •4.3.6. Передача аргументов в функцию по ссылке
- •Пример 4‑11
- •4.4. Организация возврата значений из функции в вызывающий её скрипт
- •4.4.1. Функции, возвращающие единичные (скалярные) значения
- •Пример 4‑12
- •Пример 4‑13
- •4.4.2. Функция, возвращающая массив. Использование списков
- •Пример 4‑14
- •4.4.3. Функция, возвращающая ссылки
- •Пример 4‑15
- •4.5. Типизация переменных в php по их «области действия», «видимости» и «времени жизни». Глобальные, суперглобальные и статические переменные
- •4.5.1. Общие положения
- •Пример 4‑16
- •4.5.2. Предопределённые переменные и суперглобальные массивы
- •Пример 4‑17
- •4.5.3. Статические переменные
- •Пример 4‑18
- •4.6. Дополнительные возможности работы с функциями в php
- •4.6.1 Переменные, ссылающиеся на функции
- •Пример 4‑19
- •4.6.2. Условное (динамическое) описание функций
- •Пример 4‑20
- •4.6.3. Вложенные функции и вложенные файлы
- •Где хранить эти файлы?
- •Какую команду надо использовать, чтобы вставлять файл в нужное место?
- •Какими должны быть синтаксис и расширение таких файлов?
- •Пример 4‑511
- •4.6.4. Обработка ошибок в функциях пользователя
- •Пример 4‑22
- •4.7. Рекурсивное использование функций
- •4.7.1. Рекурсивные и итеративные функции – в чём разница, недостатки и преимущества
- •Пример 4‑23
- •4.8. Основные итоги по теме «Функции»
- •Глава 5.Работа с файлами
- •5.1. Возможности работы с файлами в php
- •5.1.1. Введение
- •5.1.2. Понятия и термины, связанные с понятием «файл»
- •5.1.2.1. Понятие файла и файловой системы
- •Свойства файла
- •Операции и сущности, связанные с файлами
- •Бинарные (двоичные) и текстовые файлы
- •5.2. Функция открытия файла - базовая функция при работе с файлам. Особенности обращения к файлам
- •5.2.1. Синтаксис функции открытия файла
- •Пример 5‑52
- •5.2.2. Абсолютные и относительные пути (дорожки) до файла
- •5.2.3. Понятие унифицированного (единообразного) идентификатора ресурса - uri
- •5.2.4. Уточнение возможных ссылок на файлы и особенности работы с ними
- •Пример 5‑53
- •Пример 5‑54
- •Перечень некоторых предопределённых констант php
- •5.3. Примеры использования других функций для работы с файлами
- •5.3.1. Проверка существования файла
- •5.3.2. Проверка существования и размера файла
- •Int filesize(string имя_файла)
- •5.3.3. Закрытие файла после завершения работы с ним
- •Int fclose(int дескриптор файла)
- •5.3.4. Основные операции с открытыми файлами
- •5.3.4.1. Запись в файл
- •Int fwrite(int дескриптор, string stroka[, int длина])
- •5.3.4.2. Запись файла целиком
- •Пример 5‑55
- •5.3.4.3. Чтение из файла
- •Пример 5‑56
- •5.3.5. Специальные случаи чтения файлов
- •5.3.5.1. Чтение строк текста: функция fgets( )
- •5.3.5.2. Чтение строк текста c отбрасыванием html тегов: функция fgetss( )
- •5.3.5.3. Посимвольное чтение файла: функция fgetс( )
- •Пример 5‑57
- •5.3.5.4. Чтение файла в индексированный массив: функция file()
- •5.3.5.5. Чтение файла целиком в строку: функция file_get_contents()
- •5.3.5.6. Чтение файла с его синтаксическим разбором: функция fscanf()
- •Пример 5‑58
- •5.4. Функции для операций над каталогами
- •Перечень функций по работе с каталогами
- •5.4.1. Получение дорожки до текущего скрипта и его имени
- •5.4.2. Чтение всего содержимого каталога
- •Пример 5‑8
- •5.4.3. Печать дерева каталогов
- •Визуальное отображение дерева каталогов для текущего каталога ТекКат
- •Пример 5‑9
- •5.5. Общая классификация функций php по работе с файловой системой
- •Категории функций php по работе с файловой системой
- •5.6. Права пользователей по доступу к файлам
- •5.6.1. Определение прав доступа
- •5.6.2. Описание прав доступа в системе unix и их реализация
- •Пример записи прав доступа к файлу для разных групп пользователей
- •B. Матричный вид
- •5.6.3. Особенности управления доступом к файлу в php
- •Глава 6.Вопросы и задания
- •6.1. Вопросы и задания к главе 1(Основы языка php)
- •6.1.1.Контрольные вопросы к главе 1
- •6.1.2. Задания к главе 1
- •6.2. Вопросы и задания к главе 2 (Синтаксис и семантика операторов php)
- •6.2.1.Контрольные вопросы к главе 2
- •6.2.2. Задания к главе 2
- •6.3. Вопросы и задания к главе 3 (Массивы)
- •6.3.1.Контрольные вопросы к главе 3
- •6.3.2. Задания к главе 3
- •6.4. Вопросы и задания к главе 4(Функции)
- •6.4.1.Контрольные вопросы к главе 4
- •6.4.2. Задания к главе 4
- •6.5. Вопросы и задания к главе 5(Работа с файлами)
- •6.5.1.Контрольные вопросы к главе 5
- •6.5.2. Задания к главе 5
- •Рекомендованные для работы с пособием источники
- •32 Монтирование файловой системы — процесс, подготавливающий раздел диска к использованию операционной системой.
6.3.2. Задания к главе 3
1. Изучить и выполнить все примеры главы 3.
2. Знать основные алгоритмы работы с массивами, уметь реализовать их на практике.
Создание и вывод элементов массива.
Суммирование элементов массива.
Поиск максимального и минимального элемента массива, вывод их значений, а также соответствующих индексов на экран.
Сортировка элементов массива.
Для двух заданных массивов построить третий, элементы которого:
есть и в первом, и во втором массиве одновременно;
есть в первом, но отсутствуют во втором;
есть во втором, но отсутствуют в первом;
есть или в первом, или во втором массиве.
3. Создать массив, элементы которого перечисляют животных зоопарка (всего 5-8 наименований) и распечатать их.
4. Проанализировать приведённый ниже скрипт: понять, что он описывает, как работает, что будет печатать на экране.
<?php
$photo=array("name"=>"dog.jpg", "size"=>"130k", "type"=>"image/jpeg", "description"=>"Фотография моей собаки");
while ($m=each($photo)) // Необходимо изучить работу функции each( )!
{
echo $m["key"];
echo " — ";
echo $m["value"];
echo "<br>";
}
?>
Выполнить скрипт и сравнить ваш прогноз с результатом его работы.
5. Создать скрипт, описывающий содержание цифрового семейного фотоальбома, в котором находятся несколько фотографий (например, 5) ваших родственников.
6. Проанализировать и выполнить приведённый ниже скрипт, предварительно предсказав результат его работы:
<?php
$flowers = array (
array('name'=>'magnolia', 'лепестки'=>'8', 'тычинки'=>'5',
'пестики'=>'2', 'цвет'=>'белый'),
array('name'=>'primula', 'лепестки'=>'10', 'тычинки'=>'5',
'пестики'=>'5', 'цвет'=>'алый'),
array('name'=>'campanula latifolia', 'лепестки'=>'10',
'тычинки'=>'5', 'пестики'=>'3', 'цвет'=>'фиолетовый')
);
for ($row=0; $row<3; $row++)
{
echo "|". $flowers[$row]["name"]. "|". $flowers[$row]["лепестки"]. "|".
$flowers[$row]["тычинки"]."| <br>";
}
?>
7. Изучить работу функции shuffle(). Написать скрипт, реализующей следующую задачу:
а. Турфирма имеет набор файлов (например, формата .jpg) с видами 10 российских городов;
б. При входе на сайт этой фирмы посетитель видит таблицу с видами трёх из этих городов, выбранных случайным образом.
Указание: таблицу отображать средствами HTML.
9. Создать двумерный массив, отображающий меню ресторана, где на первое – одно блюдо, на второе – одно блюдо, а на третье (десерт)– три возможных варианта блюд. Распечатать меню с помощью функции print_r().
Сделать то же самое для меню, где имеются по два варианта первых, вторых и третьих блюд.
10. Далее предлагаются задачи на обработку одномерных и двумерных численных массивов. При этом, значения исходных массивов необходимо задавать с помощью специальных функций – генераторов случайных чисел, сведения о которых необходимо самостоятельно получить из Интернета56.
Задачи на одномерные массивы:
Даны две точки
и
. Найти координаты и модуль вектора
. Формула
и
.
Определить координату точки А, являющейся началом вектора
, если его конец совпадает с точкой
.
Даны две точки и . Найти координаты точки
делящей отрезок в данном отношении
. Формула
.
Даны вершины треугольника , и . Найти координаты точки
пересечения биссектрисы угла А со стороной ВС. , где
и длину биссектрисы АД.
Нормировать вектор и найти его длину. Формула
.
Найти скалярное произведение векторов
и
по формуле
.
Найти угол между векторами и по формуле
Проверить, что точки
,
,
и являются вершинами параллелограмма, трапеции или ромба.
Даны векторы и . Найти вектор
Даны векторы и . Найти
и
. Формула
и
Даны вершины треугольника , и . Определить является ли он остроугольным, прямоугольным, равнобедренным.
Найти длину медианы опущенной из вершины А на сторону ВС.
Даны три последовательные вершины параллелограмма , , . Найти его четвертую вершину и длины его диагоналей. Указание: Находите координаты точки пересечения диагоналей
, где
Найти угол между диагоналями параллелограмма построенного на векторах и Указание: векторы диагоналей
и
.
Проверить коллинеарность векторов и . Если они коллинеарны, то установить какой из них длиннее другого и во сколько раз. Как они направлены в одну сторону или в противоположные стороны? Указание:
Вычислить угол образованный медианами треугольника , и .
Имеется два отсортированных массива по неубыванию. Составить из них третий массив, объединив первые два, элементы которого расположить по неубыванию.
Дан вектор. Из него построить другой вектор, в котором нет нулевых элементов из первого.
Задачи на обработку многомерных массивов
Дано: матрица А размерности mxn и матрица В размерности mxn. Найти сумму матриц С=А+В.
Дано: матрица А размерности mxn. Найти транспонированную матрицу.
Дано: матрица А размерности mxn и матрица В размерности nхk. Найти произведение матриц С=А*В.
Просуммировать элементы строк матрицы размером mхn. Результат получить в одномерном массиве размером m.
Просуммировать элементы столбцов заданной матрицы размером mхn. Результат получить в одномерном массиве размером n.
Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, суммируя элементы одномерного массива.
Задана квадратная матрица. Переставить главную и побочную диагонали.
В матрице nxn найти количество отрицательных элементов побочной диагонали и произведение всех положительных элементов выше главной диагонали.
В матрице mхn найти минимальный элемент k-ого столбца и сумму положительных элементов ниже p-ой строки.
В матрице nxn найти произведение ненулевых элементов, расположенных ниже главной диагонали, и максимальный из элементов главной диагонали.
Найти максимальные элементы в каждом из столбцов матрицы А размером mхn и образовать из них новый одномерный массив С размерности n.
Найти произведение элементов матрицы mхn, удовлетворяющих условию А[i,j] <=2, и количество неотрицательных остальных элементов.
Найти минимальный среди положительных элементов матрицы mхn, лежащих слева от p-ого столбца, и произведение неотрицательных элементов в остальной части матрицы.
Найти минимальный элемент среди элементов p-oго столбца матрицы mхn и сумму элементов, лежащих ниже r-ой строки матрицы.
Найти количество неотрицательных элементов второго столбца матрицы nхn и минимальный элемент ниже побочной диагонали.
Преобразовать все элементы, расположенные в указанных строках матрицы nхn, по правилу: отрицательные элементы заменить на –1, положительные на +1, а нулевые оставить без изменения.
Найти минимальный среди положительных элементов матрицы nхn, расположенных выше главной диагонали и количество отрицательных элементов на главной диагонали.
Найти наибольший элемент главной диагонали матрицы nхn и его место в матрице, а также минимальный элемент побочной диагонали.
Найти сумму неотрицательных элементов, лежащих справа от р-oго столбца матрицы nхn и максимальный элемент на главной диагонали.
В каждой строке матрицы mхn выбирается элемент с наименьшим значением, затем среди этих чисел выбирается наибольшее. Указать элемент и его индексы.
Найти наименьшее из значений элементов столбца матрицы nхn, который обладает наибольшей суммой модулей элементов. Если таких столбцов несколько, то взять первый из них.
Дана квадратная матрица nxn. Получить квадратную матрицу того же порядка, в которой элемент равен 1, если соответствующий ему элемент исходной матрицы больше элемента, расположенного в его строке на главной диагонали, или, в противном случае, равен 0.
Среди элементов матрицы nxn найти максимальный - на главной диагонали и минимальный - на побочной диагонали. Определить их место в матрице.
В матрице nхn найти количество отрицательных элементов, расположенных на побочной диагонали и выше ее, а также максимальный элемент побочной диагонали.
В матрице nxn указать индексы всех элементов с наибольшим значением.
В матрице nxn все элементы с наименьшим значением заменить нулями.
В матрице nxn найти наибольший элемент, расположенный выше главной диагонали и наименьший ниже нее.
В матрице mхn поменять местами строку, содержащую элемент с наибольшим значением, со строкой, в которой расположен элемент с наименьшим значением. Если таких строк несколько, то поменять строки с наименьшими номерами.
Даны матрица nxn и число К (1<=K <=n). Столбец с максимальным по модулю элементом в К-той строке переставить с К-тым столбцом.
Найти наименьшее из значений элементов столбца, который обладает наибольшей суммой модулей элементов в матрице nхn.