在PHP中从数组创建json

时间:2014-03-18 13:10:06

标签: php json

我有这个小的SQL代码:

try {
        $stmt = $conn->prepare("SELECT APPID FROM COMMENTROOM WHERE BADGEID=? GROUP BY APPID");
        $stmt->execute(array($badgeID));
            while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                $row2[$i][0] = $row['APPID'];
                $i++;
            }
        } catch(PDOException $e) {
            echo 'ERROR: ' . $e->getMessage();
            $server_dir = $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
            header('Location: http://' . $server_dir);
            exit();
    }

当我现在用print(json_encode($row2));打印出结果时,我得到以下结果:

[["0000000021"],["0000000037"],["0000000038"],["0000000039"],["0000000128"],["0000000130"]]

由于我已经拥有这些数据,因此我不需要查询数据库。但是我仍然需要以相同的格式将它转发到我的Java应用程序。当我使用

$output[] = json_encode($row2);
print(json_encode($output));

我得到了不同的输出:

["[[\"0000000021\"],[\"0000000037\"],[\"0000000038\"],[\"0000000039\"],[\"0000000128\"],[\"0000000130\"]]"]

我检查了一些stackoverflow问题,但我找不到任何解决相同问题的问题。

2 个答案:

答案 0 :(得分:2)

你是json编码两次

$output[] = json_encode($row2);
print(json_encode($output));

只做一次:

$output[] = $row2;
print(json_encode($output));

答案 1 :(得分:0)

修改 现在我明白了你想要的......

$retval = array();
//as this while you can add as many items to the array as you want
while( $row = $stmt->fetch(PDO::FETCH_OBJ) ){
    $retval[] = $row;
}
echo json_encode( $retval );

此致 hotzu