2012-11-16 112 views
1

我有一個提供和複雜的查詢與很多字段和排序的集合。其任務是在查詢結果中僅查找具有查詢數組和當前文檔ID的前一個和下一個文檔。所以我正在寫一個javascript函數,它執行一個查詢並進行排序並返回兩個ID。問題是將php查詢數組轉換成正確的javascript對象。PHP和MongoDB。如何將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

可能是json_encode? – xelber

回答

1

要在JavaScript中讀取此數據,請從PHP回傳的JSON上運行JavaScript的eval()函數。

編輯:這裏還有別人的回答,他們在這裏討論了PHP中json_encode()的用法。

爲了您的數組轉換成JSON你會:

json_encode($my_array); 

要分析的數據轉換爲JavaScript對象,你會:

var myObject = eval(jsonStringFromPHP); 
+0

Downvote可能是eval()給出的。有更清晰的方式來處理客戶端的JSON。例如http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript –

+0

MongoDB不支持JSON.parse(),所以eval在這裏沒問題。 – Lisio

0

無需使用轉換的。一切都可以使用標準工具來完成:

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

如果用PHP >= 5.3.0運行,你可以使用json_encode,可以採取options參數的優勢。

json_encode($array, JSON_FORCE_OBJECT); 

JSON_FORCE_OBJECT

輸出的對象,而不是在使用非關聯數組的數組。當輸出的接收者期待對象並且數組爲空時特別有用。

相關問題