我有以下代码:
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:""}];
({...}
中的每个数据都是一行。
除了手动构建字符串之外,还有什么方法可以做到这一点吗?
谢谢
您应该去掉关于读取列元数据的所有无意义的内容。你最终需要的是一个对象数组。所以你可以把它简化成这样:
while ($row_obj = $psql->fetch_object()) {
$json[] = $row_obj;
}
echo "var data = ".json_encode($json).";";
在这里,$row_obj
将是一个对象,其列名称用于存储相关值的属性。
我想这个应该可以了:
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).";";
您可以使用数组联合运算符,根据这里的文档: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).";";