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