Время от времени я попадаю в ситуацию, когда у меня есть запрос, похожий по своему характеру на:
SELECT `key`, `value` FROM `settings`;
В этом случае, Я хочу получить ассоциативный массив, используя значения ключа
и значение
в качестве соответствующих записей этого массива, например если база данных содержит: ('first_name', 'Tom'), ('last_name', 'Jeferson')
, массив должен быть array ('first_name' => 'Tom', ' last_name '=>' Джеферсон ');
.
Наиболее распространенный способ сделать это:
$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
для создания массива. Однако, поскольку он включает в себя два обращения к базе данных, я опускаю это как вариант.
Есть ли другой способ сделать это?