Преобразование строк и массивов

Теперь, когда вы имеете представление и о массивах, и о строках, уместно по
говорить о двух функциях для перехода из одного представления в другое. Пер
вая функция, 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скрипт превратит строку в массив для того, что
бы можно было отсортировать список. И наконец, будет создана и возвращена
стройа, в которой имена расположены в алфавитном порядке.

Выполнение преобразования

  1. Создайте новый HTMLдокумент в текстовом редакторе.
  2. Напишите стандартный HTMLзаголовок.
  3. <HTMLxHEADxTITLE>HTML Form</TITLEx/HEADxBODY>

  4. Создайте новый HTMLдокумент для ввода текста.
  5. <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>

    В подобных случаях важно дать пользователю подробную подсказку о том,
    какую информацию требуется ввести. Например, если в качестве разделителя
    в списке он применяет запятые, то обработать строку соответствующим обра
    зом будет невозможно (после создания обоих сценариев замените пробелы за
    пятыми и оцените результаты).

  6. Создайте кнопку Submit, затем закройте форму и HTMLстраницу.
  7. <INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE="Submit!">
    </FORMx/BODYx/HTML>

  8. Сохраните сценарий как list.html (листинг. 7.6) и загрузите его на сервер.
    Листинг 7.6 т Это простая HTMLформа, куда пользователь может ввести
    список слов. Включение в форму подробных инструкций разумная практика
    Webдизайна.

  9. 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.

  10. Создайте новый HTMLдокумент в текстовом редакторе.
  11. Напишите HTMLзаголовок и откройте PHPраздел страницы.
  12. <HTMLxHEADxTITLE>Alphabetizing Example</TITLEx/HEADxBODYx?php

  13. Превратите введенную пользователем и переданную в сценарий строку

  14. $List в массив.
    $Array = explode (" ", $List);

    Эта строка кода создает новый массив $Аггау из строки $List. Каждый про
    бел между словами в строке $List указывает на конец одного слова и начало
    следующего. Таким образом, первое слово устанавливается в $Аггау [ 0 ], затем
    идет пробел в строке $List, затем второе слово устанавливается в $Аггау [ 1 ],
    и так далее до конца строки.

  15. Отсортируйте массив в алфавитном порядке.

  16. sort ($Array);

    Так как нет необходимости сохранять связь между ключами и значениями
    в массиве $Аггау, можно использовать функцию sort ( ) вместо asort ( ) , кото
    рую мы применяли выше. Для очень большого массива это дало бы некоторую
    экономию времени функция sort ( ) работает немного быстрее

  17. Создайте новую строку из отсортированного массива.
  18. $NewList = implode ("<BR>", $Array); .

    Нам надо распечатать новый список. Но, поскольку распечатать массив не
    так просто, как строку, сначала преобразуем массив $Аггау в строку $NewList.
    Новая строка будет начинаться со значения $Аггау [ 0 ], за ним пойдет HTML
    тэг <BR>, затем значение $Аггау [1], снова тэг <BR> и т.д. Использование тэга
    вместо пробела или запятой придаст списку более читабельную форму при отоб
    ражении в браузере.

  19. Распечатайте новую строку в браузере.

  20. print ("An alphabetized version of your list is:<BR>$NewList");

  21. Закройте PHPраздел и HTMLстраницу.

  22. ?></BODYx/HTML>

  23. Сохраните страницу как HandleList.php, загрузите ее на сервер в один ка
    талог с list.html (листинг. 7.7) и протестируйте оба сценария в браузере
    (рис.).
  24. Листинг 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 ().
    Есть еще несколько функций, имеющих несколько равноправных названийсино
    нимов. Вы можете использовать то имя функции, которое вам больше нравится

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: