我创建它返回一个JSON文件,HTML文件,我填补了从data.php文件中的数据网格中data.php文件。 我需要这是在以下形式的关联数组:PHP填补了一个关联数组
[
{"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是某种通用的,这意味着我不知道COLUMNNAMES也不是的列的数量。 我完成这项工作的唯一方法是使用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关联数组,无论列数是多少。 –
你可以使用循环来做到这一点。 – frz3993
感谢迈克尔,在这种情况下甚至不需要循环。好的解决方案 –