Масив PHP або об'єкт або інша складна структура даних не можна транспортувати, зберігати або використовувати іншим чином поза межами запущеного сценарію PHP . Якщо ви хочете зберегти таку складну структуру даних за межами одного запуску сценарію, вам потрібно її серіалізувати . Це просто означає перетворити структуру на "нижчий загальний знаменник", який може оброблятись іншими речами, ніж PHP, такими як бази даних, текстові файли, сокети. Стандартна функція PHP serialize- це просто формат для вираження подібної речі, вона серіалізує структуру даних у строкове подання, яке є унікальним для PHP і може бути повернено до об'єкта PHP за допомогою unserialize. Хоча існує багато інших форматів, як, наприклад, JSON або XML.
Візьмемо для прикладу цю поширену проблему:
Як передати масив PHP в Javascript?
PHP та Javascript можуть спілкуватися лише за допомогою рядків. Ви можете "foo"дуже просто передати рядок у Javascript. Ви можете 1дуже просто передати номер у Javascript. Ви можете передати булеві значення trueта falseлегко у Javascript. Але як ви передаєте цей масив у Javascript?
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
Відповідь - серіалізація . У випадку PHP / Javascript, JSON насправді кращий формат серіалізації:
{ 1 : 'elem 1', 2 : 'elem 2', 3 : 'elem 3' }
Javascript може легко повернути це до фактичного масиву Javascript.
Це так само, як дійсне представлення тієї ж структури даних, хоча:
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Але майже тільки PHP використовує його, мало підтримує цей формат деінде.
Це дуже часто і добре підтримується, хоча:
<array>
<element key='1'>elem 1</element>
<element key='2'>elem 2</element>
<element key='3'>elem 3</element>
</array>
Існує багато ситуацій, коли потрібно передавати складні структури даних навколо як рядки. Як це зробити, серіалізація, представляючи довільні структури даних у вигляді рядків.