2013-02-16 6 views
3

У меня есть массив, который я храню в виде строки в базе данных, чтобы упростить ее получение (обновляется с новыми данными каждые 15-30 минут через cron).Преобразование Array в String to Array

'player_list' -> 'Bob,Dave,Jane,Gordy' 
'plugin_list' -> 'Plugin-A 1.4, Plugin-B 2.1, Plugin-C 0.2' 

Я первоначально хранить массив в БД в виде строки с помощью:

$players = $liveInfo['players'] ? implode(",", $liveInfo['players']) : ''; 

$plugins = $liveInfo['plugins'] ? implode(",", $liveInfo['plugins']) : ''; 

настоящее время я использую следующее извлечь, а затем преобразовать строку обратно в массив в подготовке к Еогеасп:

$players = $server_live->player_list; 
$playersArray = explode(",", $players); 
$plugins = $server_live->plugin_list; 
$pluginsArray = explode(",", $plugins); 

По какой-то причине я получаю следующую ошибку: Array to string conversion Я не понимаю эту ошибку, так как я перехожу из String в Array, и я просмотрел php.net/manual, и это выглядит хорошо? ...

+0

Вы не должны хранить несколько данных в одном столбце базы данных. Если вы собираетесь это сделать, вы можете использовать текстовый файл вместо DB. Вы должны найти способ правильно упорядочить свои данные. –

+0

Я чувствовал, что в моем случае все в порядке, поскольку хранилище данных является эксклюзивным для определенной строки. Я собираю список онлайн-игроков во время ping и сохраняю его как строку для удобства, так как он обновляется каждые ~ 15-30 минут. Я подумал о отдельной таблице, но в итоге это будет миллионы строк ... – MCG

+1

Если вы абсолютно должны хранить несколько значений в одном столбце, 'serialize()' массив и сохранить результат. –

ответ

12

Если вам нужно конвертировать из Object to String и из String в Object, тогда вам потребуется выполнить сериализацию, и вы должны поддерживать ее объект.

в вашем случае, используя массивы, поддерживается сериализация.

массив в строку

$strFromArr = serialize($Arr); 

Строка массива

$Arr = unserialize($strFromArr); 

для получения дополнительной информации считают видеть сайт PHP.net: serializeunserialize

2

Если вы должны сделать это ваш путь, по сохраняя массив в базе данных, используйте функцию serialize(). Это здорово!

http://php.net/manual/en/function.serialize.php

$string = serialize($array);

$array = unserialize($string);