php - 将 mysql 结果输出为形式的数组(列名 => 列名的可能值)

标签 php mysql associative-array

我有这样的数据库

我想创建一个关联数组,这样每个 att_name 值都与其来自 att_value 的可能值相关联:

array('att_name' => array('att_value_1', 'att_value_2', 'att_value_3'))

实现此目标的最佳方法是什么?

最佳答案

虽然通过选择您想要的结果并在 PHP 中迭代它们来创建您想要的数据结构很容易做到这一点,但您可以使用 GROUP_CONCAT() 将一些工作分派(dispatch)给 MySQL。 :

$query = "
  SELECT att_name, GROUP_CONCAT(att_value SEPARATOR ',') AS values
  FROM table_name
  GROUP BY att_name
";
$result = mysql_query($query);

$array = array();
while ($row = mysql_fetch_assoc($result)) {
  $array[$row['att_name']] = explode(',', $values);
}

print_r($array);

当然,这只有在您的值永远不会包含您在 MySQL 查询中用于 SEPARATOR 的字符(或字符序列)时才有效,因此更安全的纯 PHP 方法是:

$query = "
  SELECT att_name, att_value
  FROM table_name
";
$result = mysql_query($query);

$array = array();
while ($row = mysql_fetch_assoc($result)) {
  $array[$row['att_name']][] = $row['att_value'];
}

print_r($array);

关于php - 将 mysql 结果输出为形式的数组(列名 => 列名的可能值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952828/

相关文章:

java - SQL Server 2008 上的分页

mysql - 事件记录性能; $this->db 链接或重复

php - mysql查询检索每一行数据

php - 您能向 PHP 人员解释 Perl 的哈希系统吗?

java - java中的多级关联数组,如php

php - 从函数返回时访问数组元素

php - 在默认浏览器中打开 URL 的 Javascript 代码

PHP Regex 在任意数量的单词和 1-3 位数字之后正确语法 preg_split

php - 将 key=>value 对添加到具有条件的现有数组

php - 什么是 PHP 等同于 Java 的对象类