Теперь, когда вы имеете представление и о массивах, и о строках, уместно по
говорить о двух функциях для перехода из одного представления в другое. Пер
вая функция, implode ( ) , превращает массив в строку. Вторая, explode ( ) , вы
полняет обратное действие, разбивает строку и создает массив. Эти функции
удобно использовать в целом ряде случаев:
- иногда необходимо превратить массив в строку для добавления этого зна
чения к адресу URL (с массивом это сделать нелегко); - порой нужно превратить строку в массив для того, чтобы сохранить ин
формацию в базе данных; - вам может понадобиться сделать строку массивом, чтобы разбить тексто
вое поле с разделителями в виде запятых (скажем, область поиска по клю
чевому слову в форме) на отдельные части.
Синтаксис функции explode ( ) выглядит так:
$Array = explode ($Sepa'rator, $String) ;
Разделитель $Separator это строка символов или один символ, обознача
ющий конец одного элемента массива и начало другого. В таких случаях гово
рят, что разделитель делит строку на поля, которые затем станут элементами
массива. Обычно для этого используется запятая или пробел. Код будет выгля
деть так:
$Array = explode ( " , " , $Strihg);
Другой возможный вариант:
$Array = explode. (" ", $String) ;
Для обратного преобразования массива в строку необходимо указать разде
литель, а все остальное будет сделано автоматически:
$String = implode($Glue, .$Array) ;
$String = implode(",", $Array);
Другой допустимый вариант:
$String = implode(" ", $Array);
Чтобы показать возможное использование функций explode () и implode ( ) ,
создадим HTMLформу, в которую пользователь вводит строку из имен, разде
ленных запятыми. Затем PHPскрипт превратит строку в массив для того, что
бы можно было отсортировать список. И наконец, будет создана и возвращена
стройа, в которой имена расположены в алфавитном порядке.
Выполнение преобразования
- Создайте новый HTMLдокумент в текстовом редакторе.
- Напишите стандартный HTMLзаголовок.
- Создайте новый HTMLдокумент для ввода текста.
- Создайте кнопку Submit, затем закройте форму и HTMLстраницу.
- Сохраните сценарий как list.html (листинг. 7.6) и загрузите его на сервер.
Листинг 7.6 т Это простая HTMLформа, куда пользователь может ввести
список слов. Включение в форму подробных инструкций разумная практика
Webдизайна. - Создайте новый HTMLдокумент в текстовом редакторе.
- Напишите HTMLзаголовок и откройте PHPраздел страницы.
- Превратите введенную пользователем и переданную в сценарий строку
- Отсортируйте массив в алфавитном порядке.
- Создайте новую строку из отсортированного массива.
- Распечатайте новую строку в браузере.
- Закройте PHPраздел и HTMLстраницу.
- Сохраните страницу как HandleList.php, загрузите ее на сервер в один ка
талог с list.html (листинг. 7.7) и протестируйте оба сценария в браузере
(рис.).
<HTMLxHEADxTITLE>HTML Form</TITLEx/HEADxBODY>
<FORM ACTION="HandleList.php" METHOD=POST>
Enter the words you want alphabetized with each
individual word separated by a space:<BR>
<INPUT TYPE=TEXT NAME="List" SIZE=80xBR>
В подобных случаях важно дать пользователю подробную подсказку о том,
какую информацию требуется ввести. Например, если в качестве разделителя
в списке он применяет запятые, то обработать строку соответствующим обра
зом будет невозможно (после создания обоих сценариев замените пробелы за
пятыми и оцените результаты).
<INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE="Submit!">
</FORMx/BODYx/HTML>
1 <HTML>
2 <HEAD>
3 <TITLE>HTML Form</TITLE>
4 </HEAD>
5 <BODY>
6 <PORM ACTION="HandleList.php" METHOD=POST>
7 Enter the words you want alphabetized with each individual word
separated by a space:<BR>
8 <INPUT TYPE=TEXT NAME="Hst" SIZE=80xBR>
9 <INPtJT TYPE=SUBMIT NAME="SDBMIT" VALOE="Submit 1">
10 </FORM>
11 </BODY>
12 </HTML>
А теперь создадим страницу HandleList.php, где будут обрабатываться дан
ные, полученные от пользователя из формы list.html.
<HTMLxHEADxTITLE>Alphabetizing Example</TITLEx/HEADxBODYx?php
$List в массив.
$Array = explode (" ", $List);
Эта строка кода создает новый массив $Аггау из строки $List. Каждый про
бел между словами в строке $List указывает на конец одного слова и начало
следующего. Таким образом, первое слово устанавливается в $Аггау [ 0 ], затем
идет пробел в строке $List, затем второе слово устанавливается в $Аггау [ 1 ],
и так далее до конца строки.
sort ($Array);
Так как нет необходимости сохранять связь между ключами и значениями
в массиве $Аггау, можно использовать функцию sort ( ) вместо asort ( ) , кото
рую мы применяли выше. Для очень большого массива это дало бы некоторую
экономию времени функция sort ( ) работает немного быстрее
$NewList = implode ("<BR>", $Array); .
Нам надо распечатать новый список. Но, поскольку распечатать массив не
так просто, как строку, сначала преобразуем массив $Аггау в строку $NewList.
Новая строка будет начинаться со значения $Аггау [ 0 ], за ним пойдет HTML
тэг <BR>, затем значение $Аггау [1], снова тэг <BR> и т.д. Использование тэга
вместо пробела или запятой придаст списку более читабельную форму при отоб
ражении в браузере.
print ("An alphabetized version of your list is:<BR>$NewList");
?></BODYx/HTML>
Листинг 7.7 т Простые, недейственные функции explode () и implode ( ) по
зволяют быстро и легко отсортировать список переданных слов практически
любого размера с помощью двух строк кода.
1 <HTML>
2 <HEAD>'
3 <TITLE>Alphabetizing Ехатр1е</Т1ТЬЕх/НЕАВ>
4 <BODY>
6 /* Эта страница получает и обрабатывает данные, принятые
от "list.html". •*/
7 $Array = explode (" ", $List);
8 sort ($Array);
9 $NewList = implode ("<BR>", $Array);
10 print ("An alphabetized Aversion of your list is:<BR>$NewList");
11 ?>
12 </BODY>
13 </HTML>
Функция j oin ( ) , которая также возможна в коде, идентична функции implode ().
Есть еще несколько функций, имеющих несколько равноправных названийсино
нимов. Вы можете использовать то имя функции, которое вам больше нравится