2011-05-02 113 views
1

在PHP時得到的陣列從pgsql的:如何處理從pgsql返回的數組?

$res = $db 
    ->query("SELECT myarray FROM arrays WHERE array_name=smth") 
    ->fetchRow(); 
exit (json_encode($res)); 

在pgsql的類型是整數[]

但在JS我得到JSON與一個字符串「{1,2,3,..., }「 如何進入'陣列方式'這個數據?

回答

2

PDO不做任何類型的翻譯,所有內容都以字符串形式返回。所以你將不得不使用explode()來解析字符串,並自己構建一個PHP數組。

1

json_encode成功時返回一個JSON編碼的字符串。

將fetchrow()返回的值分配給一個變量,並嘗試在json_encode之前將其打印出來。它將是一個數組!

1

如果您想要將JavaScript解碼爲JSON數組,您可以簡單地使用函數eval()。但首先你應該確保它是一個JSON字符串。 查看更多:http://json.org/js.html

+0

的問題是,從PHP的pgsql但串獲得不陣列()。我想獲得php數組,並且json_encode將爲我做所有事情,而無需評估 – 2011-05-02 17:11:07

+1

爲什麼在將數據插入數據庫之前不先序列化變量,然後您只需將其反轉。檢查[serialize()](http://pt.php.net/manual/pt_BR/function.serialize.php)和[unserialize()](http://pt.php.net/manual/pt_BR/function。 unserialize.php)。如果你不想這樣做,你需要手動解析它們。 – 2011-05-02 17:18:18

0

您可以使用這樣的事情:

$php_array = json_decode(str_replace( 
    array('[',  ']',  '{', '}'), 
    array('\u005B', '\u005D', '[', ']'), 
    $your_pgsql_array 
));