Категории
Как хранить массивы в базе данных
При работе с базой данных MySQL иногда нужно сохранить массив в одном поле. К сожалению, нет способа непосредственно передать массив как параметр. В результате, хранение таких структур данных становиться более сложным процессом, но, тем не менее, возможным.
Чтобы конвертировать любой массив (или объект) в строку в PHP, нужно вызвать функцию serialize:
$array = array( 1, 2, 3 );
$string = serialize( $array );
echo $string;
$string содержит строчную версию массива. Выше приведенный пример выведет следующее:
a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}
Чтобы конвертировать такую строку обратно в массив, надо использовать unserialize:
// $array будет содержать( 1, 2, 3 )
$array = unserialize( $string );
Теперь проведём конвертацию массива из 200 случайно генерированных целых чисел в диапазоне от 1 до 10000:
$array = array();
for( $i = 0; $i < 200; $i++ )
$array[] = mt_rand( 1, 1000 );$string = serialize( $array );
echo $string;
Пример выведет подобную строку:
a:200:{i:0;i:465;i:1;i:202;i:2; ...;i:144;}
Данная строка может быть сохранена в базе данных и конвертирована в массив по мере надобности. Очень часто функция base64_encode используется в сочетании с функцией serialize для хранения массивов:
$string = base64_encode( serialize( $array ) );
Зашифрованная строка может быть восстановлена в массив с помощью функции base64_decode:
$array = unserialize( base64_decode( $string ) );
К сожалению, такие строки могут иметь очень большой размер. В таком случае можно использовать функцию gzcompress для сжатия строки (размер сжатой строки существенно меньше):
$smallString = gzcompress( $string );
Перед использованием, такую строку надо вернуть к обычному виду с помощью функции gzuncompress.
Вот и все, что может пригодиться при решении вопроса хранения массива в базе данных.
Информация | |||
---|---|---|---|
Автор | webmancer | Нравится | 0 |
Рейтинг | 1 | Не нравится | 0 |
Голосов | 1 | Прочитали | 1 |
Дата | 2011-12-04 09:00:00 | В избранном | 0 |
Ваша реакция |
Только авторизованные пользователи могут участвовать в рейтингах, делать заметки и добавлять в избранное. |
На рекомендательном сервисе WEBmancer.Org только зарегистрированные пользователи могут комментировать и оставлять рецензии. Авторизованный пользователь так же может ставить отметки книгам, фильмам и другим постам. Вести учет прочитанных книг и просмотренных фильмов. Добавлять посты в избранное и иметь к ним быстрый доступ.