PHP& MongoDB的。如何将php数组转换为javascript对象?

时间:2012-11-16 00:01:32

标签: php javascript mongodb

我有一系列优惠和复杂的查询,包含很多字段和排序。任务是在查询结果中查找仅包含查询数组和当前文档ID的上一个和下一个文档。所以我正在编写一个javascript函数,它通过排序执行查询并返回两个ID。问题是将php查询数组转换为正确的javascript对象。

像这样的东西,例如:

$query = array('city' => new MongoId('...'), 'price' => array('$gt' => 100000), ...);
$sort = array('price' => -1);
$code = new MongoCode("function findPrevNext() { db.offer.find($query).sort($sort).forEach(function(obj){ ... }) }");

我该如何进行转换?

3 个答案:

答案 0 :(得分:1)

要在JavaScript中读取此数据,请在从PHP回显的JSON上运行JavaScript的eval()函数。

编辑:这里有其他人的答案,他们讨论了PHP中json_encode()的用法。

要将数组转换为JSON,您可以:

json_encode($my_array);

要将该数据解析为JavaScript对象,您需要:

var myObject = eval(jsonStringFromPHP);

答案 1 :(得分:0)

根本不需要使用转换。一切都可以使用标准工具完成:

$code = 'function findNext(query, sort, current) { ... }';
$result = $mongo->command(array('$eval' => new MongoCode($code), 'args' => array($query, $sort, new MongoId($offer)), 'nolock' => true));

答案 2 :(得分:0)

如果您使用PHP >= 5.3.0投放,则可以使用json_encode并可以利用options参数。

json_encode($array, JSON_FORCE_OBJECT);

<强> JSON_FORCE_OBJECT

使用非关联数组时输出对象而不是数组。当输出的接收者期望一个对象并且该数组为空时特别有用。