我創建它返回一個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
感謝邁克爾,在這種情況下甚至不需要循環。好的解決方案 –