
- •Государственное образовательное учреждение высшего профессионального образования Волго-Вятская академия государственной службы
- •Разработка 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 Монтирование файловой системы — процесс, подготавливающий раздел диска к использованию операционной системой.
Пример 3‑44 - использование array_merge() с параметрами разных типов в php 5
<?php
$beginning = 'foo';
$end = array(1 => 'bar');
$result = array_merge((array)$beginning, (array)$end);
print_r($result);
?>
Результат выполнения данного примера:
Array
(
[0] => foo
[1] => bar
)
д). Нахождение и получение различий в элементах двух и более массивов при сравнении значений их элементов – функция array_diff
Функция сравнивает массивы, указанные в качестве входных аргументов и строит массив, содержащий только те элементы первого из указанных массивов, которых нет в любом из остальных. При этом индексы сохраняются.
Говоря языком теории множеств, эта функция определяет исключительное пересечение массивов.
Синтаксис использования функции:
имя_результир_массива = array_diff(имя_мас1, имя_мас2 [,имя_масN ...])
Таким образом, данная функция возвращает массив, который содержит значения имеющиеся только в массиве имя_мас1, с сохранением индекса этого элемента.
Рассмотрим некоторые особенности применения этой функции:
Число элементов во входных массивах может быть различным, элементы массивов могут быть разного типа и иметь индексы разных типов.
Если в массиве встречаются одинаковые элементы, то они все обрабатываются как одно значение (принимаются за один элемент).
Два элемента считаются одинаковыми, только в том случае, если их строковое представление идентично. Т.е. (string) $elem1 === (string) $elem2.
е). Нахождение и получение различий в элементах двух и более массивов при одновременном сравнении значений их элементов и индексов – функция array_diff_assoc (так называемая «строгая» проверка!).
имя_результир_массива =
array_diff_assoc(имя_мас1,имя_мас2[,имя_масN…])
Функция array_diff_assoc() возвращает массив, состоящий из тех значений массива array_1, которые отсутствуют в любом другом массиве, перечисленном в последующих аргументах. При этом различными считаются такие элементы, у которых отличаются не только значения, но и индексы.
Обратите внимание на то, что ключи возвращаемого расхождения отличны от ключей расхождения, возвращаемого функцией array_diff().
Выполним обработку функцией array_diff_assoc двух массивов:
Array
(
[a] => green
[b] => brown
[c] => blue
[0] => red
)
И
Array
(
[a] => green
[0] => yellow
[1] => red
)
Мы увидим, что, пара "a" => "green" содержится в обоих массивах, поэтому она не будет включаться в результирующий массив. И наоборот, пара 0 => "red" будет содержаться в выводе функции, потому что во втором аргументе значению "red" соответствует ключ 1.
Действительно, два значения пар key => value считаются равными только, если (string) $elem1 === (string) $elem2. Другими словами, строгая проверка считает, что строковое представление должно быть идентичным.
Пример 3‑45 – обработка массивов
<?php
echo("<pre>"); //Форматирование вывода массива
echo("Использование функции list() <//Применение функции list
br>");
$ovochi = array ('картошка','морковь','свёкла');
echo("Исходный массив \$ovochi : <br>");
print_r($ovochi);
list($first,$second) = $ovochi;
echo(" Результат применения функции list(\$first,\$second) = \$ovochi: <br>");
echo " \$first = $first, ", "\$second = $second" , "<br>";
echo "<br>";
//----------------------------------------------------------
//Применение функции extract
echo("Использование функции extract()");
$fruct["good"] = "яблоко";
$fruct["better"] = "груша";
$fruct["best"] = "персик";
echo "<br>";
echo("Исходный массив \$fruct : <br>");
print_r($fruct);
extract($fruct);
echo "Новые переменные: <br>";
echo "\$good = $good <br>";
echo "\$better= $better <br>";
echo "\$best= $best <br>";
echo '<br>';
//--------------------------------------
//Разделение массива
echo("Использование функции array_list <br>");
echo 'Пример №1 - Подмассив, выделенный из $fruct <br>';
$podmassiv = array_slice($fruct, 1, 2);
print_r($podmassiv);
echo("Пример №2 на использование функции array_list <br>");
$directors = array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang");
echo("Исходный массив: <br>");
print_r($directors);
// Выводит "Array ( [0] => Stanley Kubrick [1] => Martin Scorsese),"
//без сохранения индексов
echo("Результат №1 - извлечение без сохранения индексов <br>");
print_r( array_slice( $directors, 1, 2 ) );
// Выводит "Array ( [0] => Stanley Kubrick [1] => Martin Scorsese),"
//с сохранением индексов
echo("Результат №2 - извлечение с сохранением индексов <br>");
//print_r( array_slice( $directors, 1, 2, true ) );
print_r( array_slice( $directors, 1,2,TRUE) );
//----------------------------------------------------------
echo '<br>';
//Слияние простых массивов с помощью функции array_merge
echo("Использование функции array_merge <br>");
echo 'Пример №1 слияния массивов',"<br>";
$fruct1 = array ("абрикос","нектарин","лимон");
echo 'Первый исходный массив $fruct, второй исходный массив $fruct1:<br>';
print_r($fruct1);
$novmassivsl=array_merge($fruct,$fruct1);
echo 'Результат слияния массивов $fruct и $fruct1:',"<br>";
foreach ($novmassivsl as $el)
{echo "Элемент массива: $el <br>";}
echo '<br>';
//-----------------------------------------------------------
/*Продолжение примеров слияния массивов с помощью функции array_merge */
echo 'Пример №2 слияния массивов',"<br>";
$array1 = array ("color" => "red", 2, 4);
$array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);
echo 'Первый исходный массив $array1:<br>';
print_r($array1);
echo '<br>';
echo 'Второй исходный массив $array2:<br>';
print_r($array2);
echo '<br>';
echo 'Пример №2 слияния массивов, результат:',"<br>";
$result = array_merge ($array1, $array2);
print_r($result);
echo '<br>';
echo 'Пример №3 слияния массивов',"<br>";
$array2 = array(1 => "data");
echo 'Первый исходный массив - $array1; Второй исходный массив $array2:<br>';
print_r($arr2);
echo 'Результат слияния массивов:',"<br>";
$result = array_merge ($array1, $array2);
print_r($result);
//-----------------------------------------------------------
//Примеры сравнения массивов
echo("Использование функции сравнения массивов: array_diff - нахождение различающихся по значениям элементов <br>");
$arr1 = array("a" => "green", "red", "blue", "red");
$arr2 = array("b" => "green", "yellow", "red");
echo 'Первый исходный массив $arr1:<br>';
print_r($arr1);
echo 'Второй исходный массив $arr2:<br>';
print_r($arr2);
$result = array_diff($arr1, $arr2);
echo 'Результат сравнения - массив $rezult:',"<br>";
print_r($result);
echo("Использование функции сравнения массивов: array_diff_assoc - нахождение элементов, различающихся и значениями, и индексами <br>");
echo 'Пример №1,<br>';
$arr1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
echo 'Первый исходный массив $arr1:<br>';
print_r($arr1);
$arr2 = array("a" => "green", "yellow", "red");
echo 'Второй исходный массив $arr2:<br>';
print_r($arr2);
$result1 = array_diff_assoc($arr1, $arr2);
echo 'Результат сравнения - массив $rezult1:',"<br>";
print_r($result1);
echo 'Пример №2,<br>';
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
echo 'Первый исходный массив $arr2:<br>';
print_r($arr2);
echo 'Второй исходный массив $array1:<br>';
print_r($array1);
$result2 = array_diff_assoc($arr2, $array1);
echo 'Результат сравнения - массив $rezult2:',"<br>";
print_r($result2);
?>