创建动态对象并对其进行JSON编码

Cor*_*ell 0 php json pdo

我有以下代码:

while ($row = $psql - > fetch()) {
    for ($i = 0; $i < $psql - > columnCount(); $i++) {
        $col = $psql - > getColumnMeta($i);
        array_push($json, array($col['name'] = > $row[$i]));
    }
}
echo "var data = ".json_encode($json).";";
Run Code Online (Sandbox Code Playgroud)

哪个产生这个输出:

var data = [{"id":"3"},{"id2":"1"},{"sec":"1"},{"cat":"1"},{"term":"Teste"},{"sTerm":""}];
Run Code Online (Sandbox Code Playgroud)

但是为了导入那些数据我需要输出如下所示:

var data = [{id:"3",id2:"1",sec:"1",cat:"1",term:"Teste",sTerm:""}];
Run Code Online (Sandbox Code Playgroud)

(里面的每个数据{...}都是一行.

除了手动构建字符串之外,还有什么方法可以做到这一点吗?

谢谢

Mik*_*ant 5

你应该消除所有关于阅读列元数据的无意义.你最终得到的是一系列物体.所以你可以简化到这个:

while ($row_obj = $psql->fetch_object()) {
    $json[] = $row_obj;
}
echo "var data = ".json_encode($json).";";
Run Code Online (Sandbox Code Playgroud)

这里,$row_obj将是一个具有列名称的对象,用于存储关联值的属性.