Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PHP_Барчук_довідник.doc
Скачиваний:
3
Добавлен:
31.08.2019
Размер:
1.14 Mб
Скачать

3.5 Сортування масиву

Мова PHP пропонує широкі можливості при сортуванні масиву.

Цей вираз сортує елементи масиву по значенню і присвоює їм нові індекси. При цьому спочатку ідуть значення, яке починається з числа, потім з прописних і рядкових букв.

Приклад

$streets[0] = "вул. В'язов";

$streets[l] = "вул. Дубов";

$streets[2] = "7-ма авеню";

Використовуючи фунцію:

sort($streets);

приведе до слідуючого результату:

$streets[0] = "7-ая авеню";

$streets[l] = "ул. Вязов";

$streets[2] = "ул. Дубов";

Якщо ж використання функції sort() для сортування масиву, індексами якого є текстові рядки, PHP перетворює їх в число. Тому для таких випадків треба використовувати функцію asort();

$capitals['СА'] = "Сакраменто";

$capitals['TX'] = "Остін";

$capitals['OR'] = "Салєм";

Цей вираз сортує значення столиць, при цьому не змінюючи індекси масиву.

assort();

$capitals['TX'] = "Остін";

$capitals['СА'] = "Сакраменто";

$capitals['OR'] = "Салєм";

3.6 Серіалізація

Cеріалізация - це процес, за допомогою якого складна структура даних, наприклад, масив або об'єкт (який не може бути переданий у форму чи базу даних безпосередньо), перетворюється в рядок за допомогою деякого оборотного методу. Якщо виражатися більш простою мовою - коли вам потрібно, припустимо, забити в базу або передати через форму не просто одне значення, а цілий об'єкт PHP, наприклад двовимірний масив, ви не можете передати його будь-б то не було методом безпосередньо (технічні можливості не дозволять це зробити) - ось тут на допомогу і приходить функція "серіалізациі", яка перетворює об'єкт, і поверне його у вигляді простого набору символів, який вже може бути легко оброблений будь-яким підходящим методом.

Функції для серіалізациі

У той час як для серіалізациі складних структур даних зазвичай створюється власна функція, ceріалізацію будь-якої змінної PHP можна здійснити за допомогою функції serialize ().

Її синтаксис виглядає наступним чином: serialize ($ input), де $input - структура даних для серіалізациі. Ця функція повертає строкове подання вхідних даних.

<?php $a = array("field1" => "text", "field2" => "text", 0 => 3, 1 => "text4"); $b = serialize($a); ?>

Результат виконання:

a:4:{s:6:"field1";s:4:"text";s:6:"field2";s:4:"text";i:0;i:3;i:1;s:5:"text4";}

Як ви можете бачити з вмісту змінної - даний рядок також не можна безпосередньо записати в базу даних або передати за допомогою http-протоколу, так як вона містить неприпустимі символи. Для вирішення цієї проблеми в наше розпорядження надходять різні методи. Наприклад, якщо дані потрібно зберегти рядок в базі даних, то підійде просте використання функції addslashes (), яка "заекранурє" всі службові символи. При роботі з НТТР-нротоколом потрібно використовувати функцію urlencode ().

Після цього, отриманий рядок може бути передана як елемент html-форми, записана в базу даних або збережена у файл для подальшого використання.

Для відновлення структури даних з її серіалізовать подання в PHP передбачена наступна функція:

unserialize($input_string [, $callback_function])

,де $input_string представляє серіалізований раніше рядок для відновлення, а $callback_function - ім'я необов'язковою функції зворотного виклику для використання, якщо unserialize () реконструює об'єкт, який не був визначений.

Не варто забувати, що якщо серіалізовать рядок перед записом у базу або в файл була оброблена функцією типу addslashes () - необхідно перед використання unserialize () застосувати обернену функцію, тобто у разі використання addslashes () це stripslashes ().

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]