Naprawdę nie jestem pewien, czy jest jakiś lepszy sposób. Możesz spróbować tego?
$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
$languages = array();
function getLangs($col, $row) {
$languages[$col['id']] = $col['name'];
}
array_walk($rows, 'getLangs');
Nie ma nic złego w pętlach foreach. W rzeczywistości używałbym tego, co masz. Trudno jest uzyskać czystsze niż ...
UPDATE:
Po uważnym przeczytaniu ponownie pytanie, co naprawdę powinno być pytaniem jest, czy można formatować zapytanie w taki sposób, że wyniki są zwracane w innym formacie.
Sposób, że zwracany jest normalne zapytanie SELECT jest thusly:
+----+----------+
| 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
co pytasz, jest dla niektórych sposobem na powrót swoje wyniki kwerendy tak:
// 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 nie jestem całkowicie pewny, czy możesz do this w SQL, aby być całkowicie szczery. Poleciłbym także, nawet jeśli byś tego chciał. Byłoby straszne dla stołu skalującego. Jeśli Twój stół jest statyczny, to dlaczego nie sformatować go w sposób, o którym właśnie wspomniałem? Dlaczego po prostu nie ma tego w statycznej tablicy PHP w pliku włączającym?
Jeśli chcesz zwrócić tablicę asocjacyjną z PDO, czy '$ rows = $ Instrukcja-> fetchAll (PDO :: FETCH_ASSOC);' Wtedy można odwoływać się przez '$ rows [$ row_num] [$ col_name] ' – jdstankosky
Rozumiem, o co prosisz. Zapoznaj się z moją zaktualizowaną odpowiedzią, aby odpowiedzieć na Twoje pytanie. – jdstankosky