1

我有一组报价和复杂查询,其中包含很多字段和排序。任务是在只有一个查询数组和当前文档 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){ ... }) }");

我怎样才能进行这样的转换?

4

3 回答 3

1

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

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

对于您将数组转换为 JSON,您将:

json_encode($my_array);

要将这些数据解析为 JavaScript 对象,您可以:

var myObject = eval(jsonStringFromPHP);
于 2012-11-16T00:12:19.803 回答
1

如果使用 运行PHP >= 5.3.0,则可以使用json_encode并且可以利用options参数。

json_encode($array, JSON_FORCE_OBJECT);

JSON_FORCE_OBJECT

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

于 2012-12-13T04:39:47.377 回答
0

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

$code = 'function findNext(query, sort, current) { ... }';
$result = $mongo->command(array('$eval' => new MongoCode($code), 'args' => array($query, $sort, new MongoId($offer)), 'nolock' => true));
于 2012-11-16T21:35:33.703 回答