Non realmente sicuro se c'è un modo migliore. Potresti provare questo?
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
$languages = array();
function getLangs($col, $row) {
$languages[$col['id']] = $col['name'];
}
array_walk($rows, 'getLangs');
Non c'è niente di sbagliato nei cicli foreach. In realtà userò quello che hai. E 'difficile ottenere più pulita di quella ...
UPDATE:
Dopo aver attentamente riletto la tua domanda, ciò che veramente dovrebbe chiedere è se è possibile formattare la query in modo tale che i risultati vengono restituiti in un formato diverso.
Il modo in cui il vostro normale query SELECT viene restituito è così:
+----+----------+
| 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
Quello che stai chiedendo è per un modo per restituire i risultati della query in questo modo:
// 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;
I' Non sono del tutto sicuro che tu possa scrivere do this in SQL, per essere perfettamente onesto. Lo raccomanderei anche contro, anche se potessi. Sarebbe orrendo per un tavolo di scale. Se il tuo tavolo è statico, perché non formattarlo nel modo in cui ho appena menzionato per cominciare? Perché non averlo solo in un array PHP statico in un file di inclusione?
Se si desidera restituire un array associativo con DOP, non '$ rows = $ statement-> fetchAll (DOP :: FETCH_ASSOC);' Poi è possibile fare riferimento da '$ rows [$ row_num] [$ col_name] ' – jdstankosky
Capisco cosa stai chiedendo ora. Si prega di consultare la mia risposta aggiornata per rispondere alla vostra richiesta particolare. – jdstankosky