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