我有一系列优惠和复杂的查询,包含很多字段和排序。任务是在查询结果中查找仅包含查询数组和当前文档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){ ... }) }");
我该如何进行转换?
答案 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 强>
使用非关联数组时输出对象而不是数组。当输出的接收者期望一个对象并且该数组为空时特别有用。