<?php // Определяем массив $arr = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); // Генерируем случайный индекс массива $index = rand(0,count($arr) - 1); // Выводим случайный элемент массива echo $arr[$index]; ?>
7) Получение части массива array_slice()
Создадим массив $a
<?php $a = array(`a','b','3','5','f'); ?>
Получить часть массива можно при помощи следующего кода:
<?php $b = array_slice($a, 2) // вывод 3, 5, f $b = array_slice($a,0,3) // a, b, 3 ?>
8) Сериализация массива
Функции serialize() и unserialize() позволяют осуществлять упаковку и распаковку, соответственно, массивов и объектов.
Замечание. Сериализация впервые появилась в объектно-ориентированных библиотеках, (первой из которых была MFC), потом сериализация стала появляться в объектно-ориентированных языках (Java).
Идея сериализации заключается в том, что объекты и массивы очень сложны по своей структуре и на сохранения их путём перебора каждого элемента требуется значительный объём кода -- самым простым решением является сохранение таких структур в виде единой закодированной последовательности -- байт-коде.
В PHP функции сериализации упаковывают данные не виде байт-кода, а виде строки.
<?php $poll[0] = 23; $poll[1] = 45; $poll[2] = 34; $poll[3] = 2; $poll[4] = 12; // Упаковываем массив в строку $str = serialize($poll); echo $str."<br />"; // Извлекаем массив из строки $arr = unserialize($str); print_r($arr); ?>
Результат:
a:5:{i:0;i:23;i:1;i:45;i:2;i:34;i:3;i:2;i:4;i:12;} Array ( [0] => 23 [1] => 45 [2] => 34 [3] => 2 [4] => 12 )
Задания к работе
1. Создать массив student со значениями имен, фамилий и возраста студентов. Вывести на экран значения элементов массива.
2. Преобразования типов и перезаписи элементов. Обратите внимание на использование процедуры var_dump()
3. Использования многомерного массива и организации доступа к его элементам.
4. Найдите сумму и количество элементов массива, попавших в интервал [a; b]. Границы интервала вводятся с клавиатуры.
5. Задан упорядоченный по возрастанию целочисленный массив. Сформировать второй массив из случайных целых чисел, которые не встречаются в первом массиве, но имеют величину больше минимального и меньше максимального из чисел первого массива.
6. Вводится массив, представляющий собой сжатие серий нулей и единиц, где каждый элемент обозначает количество элементов в очередной серии нулей или единиц. Но если первым элементом вводимого массива является 0, значит первая серия распакованного массива - единицы.
7. Найти сумму положительных элементов массива.
8. Какая сумма элементов массива больше - с первого до элемента с номером К или от элемента с номером К+1 до последнего.
9. Найти элементы массива, которые сильно отклоняются от среднего значения (элементов массива).
10. Найти сумму тех элементов массива, которые одновременно имеют четные и отрицательные значения.
11. При заданных координатах A1, A2, ..., An одной точки и координатах B1, B2, ..., Bn другой точки n-мерного пространства. Найти расстояние между ними по формуле sqrt(sqr(A1-B1) + ... + sqr(An-Bn)).
12. В однородном массиве, состоящем из N вещественных элементов, найти максимальный по модулю элемент массива.
Практическое занятие №10.
Тема: Понятие функций в php.
Цель работы: функции предназначены для выполнения различных манипуляций со строками. Более специализированные функции см. в разделах, посвященных регулярным выражениям.
Указание к работе: для получения общей информации о работе со строками, особенно об использовании одиночных и двойных кавычек и экранировании символов мы используем функции.
Требования
Эти функции всегда доступны.
Установка
Для использования этих функций не требуется проведение установки, поскольку они являются частью ядра PHP.
Предопределенные константы
Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение подгружается во время выполнения.
CRYPT_SALT_LENGTH integer
CRYPT_STD_DES integer
CRYPT_EXT_DES integer
CRYPT_MD5 integer
CRYPT_BLOWFISH integer
HTML_SPECIALCHARS (integer)
HTML_ENTITIES (integer)
ENT_COMPAT (integer)
ENT_QUOTES (integer)
ENT_NOQUOTES (integer)
CHAR_MAX (integer)
LC_CTYPE (integer)
LC_NUMERIC (integer)
LC_TIME (integer)
LC_COLLATE (integer)
LC_MONETARY (integer)
LC_ALL (integer)
LC_MESSAGES (integer)
STR_PAD_LEFT (integer)
STR_PAD_RIGHT (integer)
STR_PAD_BOTH (integer)
Смотрите также
Для получения информации о более сложной обработке строк обратитесь к разделам о регулярных выражениях:POSIX-совместимых и Perl-совместимых.
Содержание
addcslashes -- Экранирует спецсимволы в стиле языка C
addslashes -- Экранирует спецсимволы в строке
bin2hex -- Преобразует бинарные данные в шестнадцатиричное представление
chop -- Псевдоним функции rtrim()
chr -- Возвращает символ по его коду
chunk_split -- Разбивает строку на фрагменты
convert_cyr_string -- Преобразует строку из одной кириллической кодировки в другую
convert_uudecode -- Преобразует строку из формата uuencode в обычный вид
convert_uuencode -- Преобразует строку в формат uuencode
count_chars -- Возвращает информацию о символах, входящих в строку
crc32 -- Вычисляет CRC32 для строки
crypt -- Необратимое шифрование (хэширование)
echo -- Выводит одну или более строк
explode -- Разбивает строку на подстроки
fprintf -- Записывает отформатированную строку в поток
get_html_translation_table -- Возвращает таблицу преобразований, используемую функциями htmlspecialchars() иhtmlentities()
hebrev -- Преобразует текст на иврите из логической кодировки в визуальную.
hebrevc -- Преобразует текст на иврите из логической кодировки в визуальную с преобразованием перевода строки.
html_entity_decode -- Преобразует HTML сущности в соответствующие символы
htmlentities -- Преобразует символы в соответствующие HTML сущности.
htmlspecialchars_decode -- Преобразует специальные HTML-сущности обратно в соответствующие символы
htmlspecialchars -- Преобразует специальные символы в HTML сущности
implode -- Объединяет элементы массива в строку
join -- Псевдоним функции implode()
levenshtein -- Вычисляет расстояние Левенштейна между двумя строками
localeconv -- Возвращает информацию о числовых форматах
ltrim -- Удаляет пробелы из начала строки
md5_file -- Возвращает MD5 хэш файла
md5 -- Возвращает MD5 хэш строки
metaphone -- Возвращает ключ metaphone для строки
money_format -- Форматирует число как денежную величину
nl_langinfo -- Возвращает информацию о языке и локали
nl2br -- Вставляет HTML код разрыва строки перед каждым переводом строки
number_format -- Форматирует число с разделением групп
ord -- Возвращает ASCII код символа
parse_str -- Разбирает строку в переменные
print -- Выводит строку
printf -- Выводит отформатированную строку
quoted_printable_decode -- Раскодирует строку, закодированную методом quoted printable
quotemeta -- Экранирует специальные символы
rtrim -- Удаляет пробелы из конца строки
setlocale -- Устанавливает локаль
sha1_file -- Возвращает SHA1 хэш файла
sha1 -- Возвращает SHA1 хэш строки
similar_text -- Вычисляет степень похожести двух строк
soundex -- Возвращает ключ soundex для строки
sprintf -- Возвращает отформатированную строку
sscanf -- Разбирает строку в соответствии с заданным форматом
str_ireplace -- Регистро-независимый вариант функции str_replace().
str_pad -- Дополняет строку другой строкой до заданной длины
str_repeat -- Возвращает повторяющуюся строку
str_replace -- Заменяет строку поиска на строку замены
str_rot13 -- Выполняет над строкой преобразование ROT13
str_shuffle -- Переставляет символы в строке
str_split -- Преобразует строку в массив
str_word_count -- Возвращает информацию о словах, входящих в строку
strcasecmp -- Сравнение строк без учета регистра, безопасное для данных в двоичной форме
strchr -- Псевдоним функции strstr()
strcmp -- Сравнение строк, безопасное для данных в двоичной форме
strcoll -- Сравнение строк с учетом текущей локали
strcspn -- Возвращает длину участка в начале строки, не соответствующего маске
strip_tags -- Удаляет HTML и PHP тэги из строки
stripcslashes -- Удаляет экранирование символов, произведенное функцией addcslashes()
stripos -- Возвращает позицию первого вхождения подстроки без учета регистра
stripslashes -- Удаляет экранирование символов, произведенное функцией addslashes()
stristr -- Регистро-независимый вариант функции strstr().
strlen -- Возвращает длину строки
strnatcasecmp -- Сравнение строк без учета регистра с использованием алгоритма "естественного упорядочения"
strnatcmp -- Сравнение строк с использованием алгоритма "естественного упорядочения"
strncasecmp -- Сравнение первых n символов строк без учета регистра, безопасное для данных в двоичной форме
strncmp -- Сравнение первых n символов строк без учета регистра, безопасное для данных в двоичной форме
strpbrk -- Ищет в строке любой символ из заданного набора
strpos -- Возвращает позицию первого вхождения подстроки
strrchr -- Находит последнее вхождение подстроки
strrev -- Переворачивает строку
strripos -- Возвращает позицию последнего вхождения подстроки без учета регистра
strrpos -- Возвращает позицию последнего вхождения символа
strspn -- Возвращает длину участка в начале строки, соответствующего маске
strstr -- Находит первое вхождение подстроки
strtok -- Разбивает строку
strtolower -- Преобразует строку в нижний регистр
strtoupper -- Преобразует строку в верхний регистр
strtr -- Преобразует заданные символы
substr_compare -- Безопасное для обработки данных в двоичной форме сравнение 2 строк со смещением, с учетом или без учета регистра
substr_count -- Возвращает число вхождений подстроки
substr_replace -- Заменяет часть строки
substr -- Возвращает подстроку
trim -- Удаляет пробелы из начала и конца строки
ucfirst -- Преобразует первый символ строки в верхний регистр
ucwords -- Преобразует в верхний регистр первый символ каждого слова в строке
vfprintf -- Записывает форматированную строку в поток
vprintf -- Выводит отформатированную строку
vsprintf -- Возвращает отформатированную строку
wordwrap -- Выполняет перенос строки на данное количество символов с использованием символа разрыва строки.
Задания к работе
1. Дайте понятие файла.
2. Для чего предназначена функция fopen() и в какой библиотеке она определена?
3. Чему должен быть равен второй аргумент функции fopen() для открытия файла на чтение?
4. Какое значение возвращает функция fopen() при неудачном открытии файла?
5. Дайте понятие текстового режима доступа к файлу.
6. Для чего предназначены функции getc(), fgets() и fscanf()?
7. Запишите программу для записи информации по книгам в файл с помощью функции fprintf().
8. В чем отличие режима добавления информации в файл от режима записи информации?
9. Что делают функции fseek() и ftell()?
10. Дайте понятие бинарного режима доступа к файлу.
11. Какие функции позволяют записывать и считывать информацию из бинарного файла?
12. Для чего предназначена функция fclose()?
Практическое занятие № 11
Тема: Работа над методами get и post
Цель работы: применить метод get и post с открытым исходным кодом и понять смысл применения этога метода на практике.
Указание к работе: в формах для отправки данных на сервер применяются два метода HTTP-запросов: GET и POST, каждый из которых имеет свои преимущества и недостатки и применяется в зависимости от конкретной ситуации
Протокол HTTP
Протокол HTTP работает поверх TCP/IP. Фактически же это означает, что клиент открывает сокет до сервера, пишет туда HTTP запрос (request), сервер читает запрос, обрабатывает его и посылает результат обработки (response) обратно клиенту.
Любой HTTP запрос, как и любой ответ по этому протоколу состоит из двух блоков: заголовок и собственно данные. Заголовок отделён от данных двойным символом переноса строки (в Java это будет "\n\n", хотя допускается и "\r\n\r\n" для платформы Windows).
Так как HTTP был изначально ориентирован на пересылку прежде всего текстовой информации, то HTTP заголовок является полностью текстовым, все символы, передающиеся в нём, являются печатными (прежде всего цифры и литеры латинского алфавита A-Z, a-z, а также набор других отображаемых символов + символ переноса строки "\n" или "\r\n"). При передаче в HTTP заголовке других символов, будет выдана ошибка "400 Вad request".
HTTP запросы. CGI интерфейс. Методы
Разберём подробнее HTTP запрос клиента. Он может выглядеть например так:
POST http://localhost/ HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Accept-Language: ru
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.0.3705)
Host: localhost
Proxy-Connection: Keep-Alive
param1=1¶m2=2
Взглянув на пример, можно заметить, что запрос начинается со слова "POST". Это слово означает метод передачи данных на сервер, в котором дополнительные данные запроса (строка "param1=1¶m2=2") передаются после заголовка.
В HTML документах, метод передачи данных указывается в форме отправки сообщений. Например для того, чтобы получить этот запрос, была использована следующая форма: