我有以下代码:
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).";";
产生此输出:
var data = [{"id":"3"},{"id2":"1"},{"sec":"1"},{"cat":"1"},{"term":"Teste"},{"sTerm":""}];
但是为了导入那些数据,我需要输出看起来像这样:
var data = [{id:"3",id2:"1",sec:"1",cat:"1",term:"Teste",sTerm:""}];
({...}
内的每个数据都是一行。
除了手动构建字符串之外,还有什么方法可以做到这一点吗?
谢谢
答案 0 :(得分:5)
你应该消除所有关于阅读列元数据的无意义。你最终得到的是一系列物体。所以你可以简化这个:
while ($row_obj = $psql->fetch_object()) {
$json[] = $row_obj;
}
echo "var data = ".json_encode($json).";";
此处,$row_obj
将是一个对象,其列名用于存储关联值的属性。
答案 1 :(得分:3)
我认为应该这样做:
while ($row = $psql->fetch()) {
$line = array();
for ($i = 0; $i < $psql-> columnCount(); $i++) {
$col = $psql-> getColumnMeta($i);
$line[$col['name']] = $row[$i];
}
array_push($json,$line);
}
echo "var data = ".json_encode($json).";";
答案 2 :(得分:0)
你可以使用数组union运算符,根据这里的文档:http://www.php.net/manual/en/function.array-merge.php我还没有尝试过,但由于$json
是一个数组,你应该能够以这种方式连接它。
$json = array();
while ($row = $psql - > fetch()) {
for ($i = 0; $i < $psql - > columnCount(); $i++) {
$col = $psql - > getColumnMeta($i);
$json = $json + array($col['name'] = > $row[$i]));
}
}
echo "var data = ".json_encode($json).";";