2013-02-16 36 views
3

我有一個數組,我將其作爲字符串存儲在數據庫中,以便更容易檢索(每隔15-30分鐘通過cron刷新一次新數據)。數組以字符串到數組的轉換

'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']) : ''; 

我目前使用以下中檢索,然後將字符串轉換回陣列中準備一個foreach:

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

出於某種原因,我得到以下錯誤:Array to string conversion我不明白這個錯誤,因爲我要從字符串到數組,並且我查看了php.net/manual它看起來不錯?...

+0

你不應該存儲在一個數據庫中列多個數據。如果你打算這樣做,你可以使用文本文件而不是數據庫。您應該找到一種方法來正確組織數據。 – 2013-02-16 13:20:11

+0

我覺得這很好,因爲數據存儲是專用於特定行的。我在Ping的時候抓取了一個在線玩家列表,並將它作爲一個字符串存儲,因爲它每15-30分鐘更新一次。我想過一個單獨的表,但它最終會有數百萬行... – MCG 2013-02-16 13:24:24

+1

如果您絕對必須在一列中存儲多個值,請'serialize()'數組並存儲結果。 – 2013-02-16 13:27:01

回答

12

如果您需要從Object轉換爲String並將String轉換爲Object,那麼序列化就是您所需要做的,並且您的對象應該支持它。

在你的情況下,使用數組,支持序列化。

陣列爲String

$strFromArr = serialize($Arr); 

字符串數組

$Arr = unserialize($strFromArr); 

更多信息,認爲看到php.net網站:serializeunserialize