数组转换为字符串再转换为数组

9

我有一个数组,将其作为字符串存储在数据库中以便于检索(每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);

由于某些原因,我遇到了以下错误:数组转换为字符串。 我不理解这个错误,因为我是从String转换为Array,并且我查看了php.net/manual没有发现问题?...

你不应该在一个数据库列中存储多个数据。如果你要这样做,可以使用文本文件代替数据库。你应该找到一种正确组织数据的方法。 - Tomáš Zato
在我的情况下,我觉得这样做是可以的,因为数据存储是专门针对特定行的。我在ping时获取在线玩家列表,并将其存储为字符串以方便使用,因为它每15-30分钟更新一次。我考虑过单独的表,但最终会有数百万行... - MCG
1
如果您一定要在一个列中存储多个值,请对数组进行 serialize() 处理并将结果存储。 - Mr Wednesday
2个回答

18

如果您需要从对象转换为字符串,或者从字符串转换为对象,则只需进行序列化即可,并且您的对象应该支持它。

在您的情况下,使用数组,序列化是受支持的。

数组转字符串

$strFromArr = serialize($Arr);

字符串转数组

$Arr = unserialize($strFromArr);

如需更多信息,请查看php.net网站:serializeunserialize


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接