将字符串(即数组)转换回数组

时间:2015-06-05 14:20:16

标签: php arrays string toarray

我遇到了问题,如果我从数据库中检索记录,它将以字符串形式返回。但我不希望这样,因为它应该是一个数组:

var_dump($data)

返回

string(654) "Array ( [0] => Array ( [1] => 17-6-2015 [2] => Livingwater TEST [3] => J. Luttik [4] => E. Luttik [5] => Annemarie, Rosy [id] => 7 ) [1] => Array ( [1] => 21-6-2015 [2] => Celebration [3] => P. Brenner [4] => B. Nobbe [5] => Heleen, Laurens [id] => 8 ) [2] => Array ( [1] => 24-6-2015 [2] => Celebration [3] => C. Visser [4] => E. Luttik [5] => Annet, Elsemijn [id] => 9 ) ) "

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

我想我已经得到它,它存储错误到数据库中。它应存储为json_encode($data),并作为json_decode($data, true)进行检索。

但另一种方法是将其存储为serialize($data)并使用unserialize($data)

进行检索

答案 1 :(得分:2)

我会使用one()在db和http://doc.qt.io/qt-4.8/qthread.html#run中保存信息,以将其检索为可用的内容。我相信这是最好的方法。你也可以使用json_encode和json_decode,但我更喜欢[un] serialize

答案 2 :(得分:2)

好的,显而易见的事实是存储的数据存储错误!要将此字符串重建为数组,您必须做的不仅仅是以正确的方式存储它。

所以解决方案可能来自@sanderbee:Convert var_dump of array back to array variable

或者我建议的解决方案是以正确的方式存储它们。

数据是一个数组,因此这意味着多数据。要么将其保存为序列化字符串,那么您可以将其反序列化,或者我认为更好的解决方案是数据库内的 1-N 关系,例如:

表:人类

行:

  • ID
  • 名称

表:宠物

  • ID
  • Human_ID
  • 种族

所以 1(ONE)人类可以拥有 N(0到无限远)宠物。

表:人类

  • 1,乔治布什
  • 2,Barack Obama

表:宠物

  • 1,1,Dog
  • 2,1,Cat
  • 3,1,Delphin
  • 4,2,普京

因此,虽然乔治布什有3只宠物:一只狗,一只猫和一只海豚。巴拉克•奥巴马(Barack Obama)只是把宠物当作宠物。

通过这种方式,您可以使用JOIN语句轻松地使用一个SQL查询获取所有数据。

$db->query( 'SELECT Human.Name, Pets.race FROM Human JOIN Pets ON ( Human.id = Pets.Human_ID ) ' );

看起来比反序列化要多得多吗?但是更清洁,如果你有很多数据,数据库将比......或者它应该快得多......它也更清洁。对我来说看起来更专业。

修改

您的个人资料看起来已经足以让您知道这一点了......您是否有可能去过"在数据库中使用此记录?如果是这样,那么sanderbee的第一个选择是"必须做" ..