不能確定是否有任何更好的辦法。你可以試試這個嗎?
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
$languages = array();
function getLangs($col, $row) {
$languages[$col['id']] = $col['name'];
}
array_walk($rows, 'getLangs');
foreach循環沒有問題。我實際上會使用你所擁有的。很難比這更清潔......
UPDATE:
後重新仔細閱讀了你的問題,你真正應該問的是你是否能以這樣的方式格式化您的查詢結果以不同的格式返回。
則返回正常的SELECT查詢的方式是正是如此:
+----+----------+
| id | name |
+----+----------+
| 1 | svenska |
| 2 | engelska |
| .. | ... |
| .. | ... |
+----+----------+
$row = array(
row_1 => array(
id => "1",
name => "svenska"
),
row_2 => array(
id => "2",
name => "engelska"
),
row_3 => array(
id => "...",
name => "..."
),
row_4 => array(
id => "...",
name => "..."
)
)
$row[$row_number][$column_name] = $value
什麼你問的是一些方法來回報您的查詢結果是這樣的:
// Query result is only one row, with each 'id' as column name
// And the 'name' from the same row as it's value...
+---------+----------+-----+-----+-----+
| 1 | 2 | ... | ... | ... |
+---------+----------+-----+-----+-----+
| svenska | engelska | ... | ... | ... |
+---------+----------+-----+-----+-----+
$row = array(
row_1 => array(
1 => "svenska",
2 => "engelska",
... => "...",
... => "...",
... => "..."
)
)
$languages = $row[row_1];
$languages[$id] = $name;
我m不完全確定你在SQL中使用do this,這是非常誠實的。即使可以,我也會建議不要這樣做。這將是一個可怕的縮放表。如果你的表是靜態的,那麼爲什麼不按照剛纔提到的方式來格式化呢?爲什麼不把它放在包含文件中的靜態PHP數組中?
如果要返回與PDO的關聯數組,你'$行= $陳述書>使用fetchall(PDO :: FETCH_ASSOC);'然後你可以通過'$引用行[$ row_num] [$ col_name]' – jdstankosky 2013-03-20 15:53:52
我明白你現在要求什麼。請參閱我更新的答案以解決您的特定查詢。 – jdstankosky 2013-03-20 16:49:19