【问题标题】:How to process array returned from pgsql?如何处理从 pgsql 返回的数组?
【发布时间】:2011-08-17 03:01:32
【问题描述】:

在 php 中我从 pgsql 得到一个数组:

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

pgsql 中的类型是整数[]

但在 JS 中,我得到带有一个字符串 "{1,2,3,...,}" 的 JSON 如何以“数组方式”获取这些数据?

【问题讨论】:

    标签: php arrays json postgresql


    【解决方案1】:

    PDO 不进行任何类型的转换,所有内容都以字符串形式返回。所以你必须使用explode()解析字符串并自己构建一个PHP数组。

    【讨论】:

      【解决方案2】:

      json_encode 成功时返回 JSON 编码字符串。

      将 fetchrow() 返回的值分配给一个变量,并尝试在 json_encode 之前打印它。这将是一个数组!!!

      【讨论】:

        【解决方案3】:

        如果您想在 JavaScript 中将 JSON 解码为数组,您可以简单地使用函数 eval()。但首先你应该确保它是一个 JSON 字符串。 查看更多:http://json.org/js.html

        【讨论】:

        • 问题是 php 从 pgsql 获取的不是 array() 而是字符串。我想获得 php 数组,而 json_encode 将为我做所有事情,而无需 eval
        • 为什么不先序列化变量再将其插入数据库,然后只需要反转它。检查serialize()unserialize()。如果您不想这样做,则需要手动解析它们。
        【解决方案4】:

        你可以这样使用:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-19
          • 1970-01-01
          • 2012-08-05
          • 2017-10-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-22
          相关资源
          最近更新 更多