我将创建一个data.php文件,该文件将返回一个json文件给一个html文件,在该html文件中,我将使用来自data.php文件的数据填充一个网格。
我需要它是以下形式的关联数组:
现在的问题是,我希望这个data.php是一种通用的形式,这意味着我不知道列名或列的数量。唯一能做到的方式就是使用switch语句,但这并不理想(因为我可以设置许多情况,但如果表格有一个以上的列怎么办),也不够优雅。
我相信这可以做得更好,你有什么想法吗?
我尝试了使用array_push(),但它不适用于关联数组。
[
{"CompanyName":"Alfreds Futterkiste","ContactName":"Maria Anders","ContactTitle":"Sales Representative"},
{"CompanyName":"Ana Trujillo Emparedados y helados","ContactName":"Ana Trujillo","ContactTitle":"Owner"},
{"CompanyName":"Antonio Moreno Taquera","ContactName":"Antonio Moreno","ContactTitle":"Owner"}
]
现在的问题是,我希望这个data.php是一种通用的形式,这意味着我不知道列名或列的数量。唯一能做到的方式就是使用switch语句,但这并不理想(因为我可以设置许多情况,但如果表格有一个以上的列怎么办),也不够优雅。
我相信这可以做得更好,你有什么想法吗?
我尝试了使用array_push(),但它不适用于关联数组。
// get columnnames
for ($i = 0; $i < $result->columnCount(); $i++) {
$col = $result->getColumnMeta($i);
$columns[] = $col['name'];
}
// fill up array
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
switch (count($columns);) {
case 1 :
$records[] = array($columns[0] => $row[$columns[0]]);
break;
case 2 :
$records[] = array($columns[0] => $row[$columns[0]], $columns[1] => $row[$columns[1]]);
break;
case 3 :
$records[] = array($columns[0] => $row[$columns[0]], $columns[1] => $row[$columns[1]], $columns[2] => $row[$columns[2]]);
break;
case ... // and so on
}
}
// send data to client
echo json_encode($records);
fetchAll()
函数,如下所示:$records = $result->fetchAll(PDO::FETCH_ASSOC); echo json_encode($records);
http://php.net/manual/en/pdostatement.fetchall.php,因为`fetchAll()`将检索所有记录的2D关联数组,而不管列数。 - Michael Berkowski