PDO将所有组键 – 值对提取到关联数组中

我偶尔会遇到类似于以下情况的查询:

SELECT `key`, `value` FROM `settings`; 

在这种情况下,我想获得一个关联数组,使用keyvalue作为数组的相应条目,例如,如果数据库包含:( ('first_name', 'Tom'), ('last_name', 'Jeferson') ,数组应该是array('first_name' => 'Tom', 'last_name' => 'Jeferson');

最常见的方法是:

 $settings_flat = $db ->query("SELECT `name`, `value` FROM `settings`;") ->fetchAll(PDO::FETCH_ASSOC); $settings = array(); foreach ($settings_flat as $setting) { $settings[$setting['name']] = $setting['value']; } 

*另一种方法是通过调用fetchAll(PDO::FETCH_COLUMN)两次然后使用array_combine来创build数组。 但是,由于涉及两个数据库的调用,所以我忽略了这个选项。

有没有另外一种方法来做到这一点?

对于你的问题有相当准备好的解决scheme,那就是:

 $q = $db->query("SELECT `name` AS name, `value` AS value FROM `settings`;"); $r = $q->fetchAll(PDO::FETCH_KEY_PAIR); 

适用于我,在PostgreSQL 9.1和在Windows 7 x64上运行的PHP 5.3.8。

 $query = $db->query("SELECT `name` AS name, `value` AS value FROM `settings`;"); $result = $query->fetchAll(PDO::FETCH_ASSOC);