- •Тема 1 Основы cgi-программирования
- •1.1 Методы передачи данных
- •1.2 Передача документа пользователю
- •1.3 Передача информации cgi-сценарию
- •Тема 2 Характеристика языка php
- •2.1 Принцип работы php
- •2.2 Переменные, константы, выражения
- •Тема 3 Работа с данными формы
- •3.1 Передача данных
- •3.2 Трансляция полей формы в переменные
- •Тема 4 Конструкции языка
- •4.1 Условные инструкции
- •4.2 Инструкции циклов
- •4.3 Инструкции включения
- •Тема 5 Ассоциативные массивы
- •5.1 Списки и ассоциативные массивы
- •5.2 Операции над массивами
- •5.3 Списки и строки
- •5.4 Сериализация
- •Тема 6 Работа с массивами
- •6.1 Сортировка массивов
- •6.2 Функции для работы с массивами
- •Тема 7 Функции и области видимости
- •7.1 Формат определения функции, передача параметров
- •7.2 Глобальные, локальные, статические переменные
- •7.3 Рекурсия, вложенные и условно-определяемые функции
- •7.4 Передача функций по ссылке и возврат функцией ссылки
- •Тема 8 Строковые функции
- •8.1 Функции работы со строками
- •8.2 Работа с блоками текста
- •Тема 9 Математические функции
- •9.1 Встроенные константы
- •9.2 Встроенные функции
- •Тема 10 Работа с файлами и каталогами,
- •10.1 Функции работы с файлами
- •10.2 Блокирование файла
- •10.3 Функции работы с каталогами
- •10.4 Запуск внешних программ
- •Тема 11 Работа с датами и временем,
- •11.1 Представление времени в формате timestamp
- •11.2 Работа с датами, григорианский календарь
- •11.3 Посылка писем через php
- •Тема 12 Работа с www
- •12.1 Установка заголовков ответа
- •12.2 Работа с Cookies
- •Тема 13 Управление интерпретатором
- •13.1 Управление интерпретатором
- •13.2 Управление сессиями
- •Тема 14 Работа с базой данных mysql
- •14.1 Соединение с базой данных
- •14.2 Выполнение запросов к базе данных
- •Тема 15 Загрузка файлов на сервер
- •15.1 Multipart-формы, тег выбора файла
- •15.2 Поддержка закачки в php
- •Учебное издание
- •Разработка программного обеспечения на платформе net: php.Net
- •246019 Г. Гомель, ул. Советская, 104
5.3 Списки и строки
Функция explode() используется для разбиения строки на более мелкие части (эти части разделяются в строке каким-то специфическим символом типа |). Формат задания функции:
list explode (string $token, string $Str
[, int $limit])
Она получает строку, заданную в ее втором аргументе, и пытается найти в ней подстроки, равные первому аргументу. Затем по месту вхождения этих подстрок строка «разрезается» на части, помещаемые в массив-список, который и возвращается. Если задан параметр $limit, то учитываются только первые ($limit-1) участков «разреза». Таким образом, возвращается список из не более чем $limit элементов.
$st="4597219361|Иванов|Иван|40|ivan@ivanov.com|Текст, содержащий (|)";
$A=explode("|", $st, 6);
// Мы знаем, что там только 6 полей!
//Теперь $А[0] ="Иванов", ... $А[5]= "Текст, содержащий (|)!"
// распределили по переменным
list ($Surname,$Name,$Age,$Email,$Tel)=$A;
Cтрокой разбиения может быть не только один символ, но и небольшая строка.
Функция implode()и ее синоним join() используются для слияния нескольких небольших строк в одну большую, вставляя между ними разделитель:
string implode (string $glue, list $List)
или
string join(string $glue, list $List).
Они берут ассоциативный массив (обычно это список) $List, заданный в ее первом параметре, и «склеивают» его значения при помощи «строки-клея» $glue во втором параметре.
Вместо списка во втором аргументе можно передавать любой ассоциативный массив – в этом случае будут рассматриваться только его значения.
5.4 Сериализация
С помощью функций implode() и explode() можно просто сохранить массив, например, в файле, а затем его оттуда считать и быстро восстановить. Однако этот способ имеет ряд существенных недостатков: во-первых, таким образом можно сохранять только массивы-списки (потому что ключи в любом случае теряются), а во-вторых, ничего не выйдет с многомерными массивами. Пусть нам все-таки нужно сохранить какой-то массив (причем неизвестно заранее, сколько у него измерений) в файле, чтобы потом, при следующем запуске сценария, его аккуратно загрузить и продолжить работу.
Для упаковки массива в строку (ведь в файлы можно писать только строки), и для восстановления строки в массив в исходном виде используются функции Serialize() и Unserialize().
Функция Serialize() возвращает строку, являющуюся упакованным эквивалентом некоего объекта $obj, переданного во втором параметре.
string Serialize (mixed $0bj )
При этом совершенно не важно, что это за объект: массив, целое число.
Пример:
$A=array ("а"=>"аа", "b"=>"bb",
"c" = >array ("х"=>"хх"));
$st=Serialize($A) ;
echo $st;
// выведется что-то типа нечто:
//а:2:(s:1:"а";s:2:"аа";s:1:"b";s:2:"bb";s:1:"с";а:1:(s:1:"х";s:2:"хх";))
Функция Unserialize(), наоборот, принимает в лице своего параметра $st строку, ранее созданную при помощи Serialize(), и возвращает целиком объект, который был упакован.
mixed Unserialize (string $st)
Например:
$a=array(l,2,3);
$s=Serialize($a);
$a= "bogus";
echo count ($a) ; // выводит 1
$a=Unserialize ($s) ;
echo count($a); // выводит 3
Сериализовать можно не только массивы, но и вообще что угодно. Однако в большинстве случаев все-таки используются массивы. Механизм сериализации часто применяется также и для того, чтобы сохранить какой-то объект в базе данных, и тогда без сериализации практически не обойтись.
