我偶尔会遇到类似的查询:
SELECT `key`, `value` FROM `settings`;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我想获得一个关联数组,使用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'];
}
Run Code Online (Sandbox Code Playgroud)
*另一种方法是通过调用fetchAll(PDO::FETCH_COLUMN)两次然后使用array_combine来创建数组.但是,因为它涉及两个数据库的两个调用,所以我将其作为一个选项.
还有另一种方法吗?
dev*_*Rew 88
对于您的问题,有很好的解决方案,即:
$q = $db->query("SELECT `name` AS name, `value` AS value FROM `settings`;");
$r = $q->fetchAll(PDO::FETCH_KEY_PAIR);
Run Code Online (Sandbox Code Playgroud)
适用于我,PostgreSQL 9.1和运行在Windows 7 x64上的PHP 5.3.8.
| 归档时间: |
|
| 查看次数: |
30600 次 |
| 最近记录: |