当前位置: 首页 > 面试题库 >

PDO fetchAll将所有组键值对组合成assoc数组

宓茂才
2023-03-14
问题内容

时不时地,我遇到类似以下查询的情况:

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创建数组。但是,由于涉及两个数据库两个调用,因此我将其省略。

还有另一种方法吗?


问题答案:

对于您的问题,有一个非常好的解决方案,即:

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

适用于我,在PostgreSQL 9.1和在Windows 7 x64上运行的PHP 5.3.8上。



 类似资料:
  • 问题内容: 我有: 我想将其转换为该对象: 在Python中,有一个简单的习惯用法。jQuery或纯Javascript中是否有类似的东西,还是我必须做很长一段路? 问题答案: 简单的JS函数将是: 当然,您实际上也可以实现zip等功能,因为JS支持更高阶的类型,这使这些函数语言主义变得容易:D

  • 问题内容: 这可能是一个愚蠢的问题,但是考虑到以下指示: 我将如何获得此列表: 换句话说,我希望字典中两个键/值对的所有组合都不能替换,而与顺序无关。 问题答案: 一种解决方案是使用: 编辑 :由于受欢迎的需求,这里是Python 3.x版本:

  • 问题内容: 如何在N个可变长度的JavaScript数组中生成值的所有组合? 假设我有N个JavaScript数组,例如 (在此示例中为三个数组,但针对该问题的数组数为N。) 我想输出其值的所有组合,以产生 编辑:这是我使用ffriend接受的答案作为基础的版本。 问题答案: 这不是排列,请参阅Wikipedia中的排列定义。 但是您可以通过 递归 实现: 您也可以使用循环来实现,但是这会有些棘手

  • 我如何创建一个组合框,它有不同的显示值和实际值的项目?

  • 如果我有一个数组如下所示: 如何按cuisinetype对此进行排序? 提前感谢您的帮助!我尝试过其他建议,但没有太大的成功!

  • 问题内容: 我有一个问题困扰了一段时间(头冷也无济于事!),基本上我有一个PHP数组,看起来像下面的例子: 而且我希望能够由此生成一个表格,其中包含这些表格的所有可能组合,但无需重复任何组合(无论其位置如何),因此例如 但是我希望它能够处理尽可能多的不同数组。 问题答案: 这称为“笛卡尔积”,数组http://php.net/manual/en/ref.array.php上的php手册页显示了一些