2011-05-02 109 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 
));