mongo PHP将数组转换为字符串

时间:2014-04-06 10:11:46

标签: php json mongodb

我通过MongoDB PHP驱动程序向MongoDB添加数据。

由于某种原因,$ _POST中的数组一旦进入数据库就被转换为字符串。

$ _POST内容:(使用print_r打印 - 仅粘贴相关数组

Array
(
...
...
   [ingredients] => [{u'amount': u'1 (14 ounce) can', u'name': u'black beans, drained', u'short_name': u'black beans'}, {u'amount': u'1 (8 ounce) jar', u'name': u'salsa', u'short_name': u'salsa'}]
...
)

DB命令是:
$success = $collection->insert($_POST);

并且mongoDB中的结果(使用mongo shell)是:

{ ....
"ingredients" : "[{u'amount': u'1 (14 ounce) can', u'name': u'black beans, drained',     
u'short_name': u'black beans'}, {u'amount': u'1 (8 ounce) jar', u'name': u'salsa',     
u'short_name': u'salsa'}]", ..... }

如何将其保存为数组?

修改
@Salvador Dali的回答是正确的。但是为了将来参考,真正的问题是数组本身(来自在python中由urllib2发出的POST rquest) u'string'失败了PHP的json_decode。将其修复为"string"解决了问题

1 个答案:

答案 0 :(得分:0)

一切都很简单。你正在传递成分中的一个字符串。所以它在db。中显示为字符串。

要验证我是否正确运行gettype($_POST['ingredients']),您会看到结果为str。很可能你的字符串是JSON。

您可以使用json_decode() abd将其解析到您的mongo中。