php - MySQL/PHP : return two columns as an associative array as key => value pairs

标签 php mysql associative-array

<分区>

如果之前有人问过这个问题,或者这甚至不可能,我深表歉意,但这是我希望使用 MySQL 从特定表中获得的信息。

比如说,我有下表:

+-------------+------------------+
| property    | value            |
+-------------+------------------+
| style       | unisex           |
| color       | blue             |
| type        | small            |
+-------------+------------------+

我希望能够从 MySQL 中获取两列 propertyvalue 作为关联数组,因此最终结果将是是:

array(
    'style' => 'unisex',
    'color' => 'blue',
    'type'  => 'small',
);

只是为了提供上下文,以免人们误解我的问题:

一旦我从通用 SQL 语句返回结果后,我已经知道如何使用 PHP 执行此操作,该语句会将每一行的列作为 key => value 对返回.我只是想知道是否可以直接从 MySQL 返回一列的值作为键,将第二个值作为键的值返回给 MySQL 的每一行,以继续 PHP.

最佳答案

没有开箱即用的获取模式可以为您提供这样的索引数组(它怎么知道哪个是键?如果有超过 2 列怎么办?)。

您可以使用 PDO::FETCH_NUMarray_map()构建一个新数组,使用第一列作为键,第二列作为值:

<?php
$query = $db->prepare("SELECT property, value FROM table");
$query->execute();
$row = $query->fetchAll(PDO::FETCH_NUM);
$rowFormatted = array_map(function ($el) {
    return [$el[0] => $el[1]];
}, $row);
var_dump($rowFormatted);

旁注:您似乎正在进入实体-属性-值反模式。这给您带来沿途的问题,因此请考虑重新设计您的模式。查看此资源以了解更多信息:

关于php - MySQL/PHP : return two columns as an associative array as key => value pairs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46815766/

相关文章:

php - MySQL "complex"SQL 查询中的计数

php - 如何在以下场景中操作数组?

php - 格式化关联数组声明

php - 仅在 while 循环中获取最后一个事务 ID 信息时遇到问题

php - mysql_query 更新

php - as3crypto 的 sha1 哈希值与 PHP 生成的哈希值不同

php - 自定义 WordPress SQL 查询以根据帖子 ID 输出元数据 - php、数据库(自定义帖子类型和字段)

php - 如何从 php 中来自 mysql 数据库的动态数据生成 pdf 文件?

Mysql 存储过程使用 2 个具有相似列的表

php - 将多个条目连接到单个条目