PDO fetchВсе группы ключ-значение пары в массив-помощник

Время от времени я попадаю в ситуацию, когда у меня есть подобный запрос:

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

В этом случае я хочу получить ассоциативный массив, используя значения key & value как соответствующие записи этого массива, например, если в базе данных содержались: ('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 для создания массива. Однако, поскольку он включает два вызова двух базы данных, я оставляю это как вариант.

Есть ли другой способ сделать это?

Solutions Collecting From Web of "PDO fetchВсе группы ключ-значение пары в массив-помощник"

Для вашей проблемы есть довольно готовое решение, то есть:

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

Работает для меня, на PostgreSQL 9.1 и PHP 5.3.8, работающих под управлением Windows 7 x64.

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